Я создаю веб-интерфейс для сайта, который будет работать с сертификатами, используя инфраструктуру Flask.Я хочу научиться выполнять модульные тесты.Я создал файл, который будет запускать тест и проверять файл routers.py.
Код Test.py:
import unittest
import sys
sys.path.insert(0, 'app/')
import routes
class FlaskrTestCase(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_my_file(self):
self.assertTrue(Certificate.IsValid(all_cert[2]))
if __name__ == '__main__':
unittest.main()
Я думаю, что ошибка связана с этой частью кода в routers.py:
@app.route('/')
@app.route('/index')
def index():
return render_template('index.html', title='Home', all_cert = all_cert)
@app.route('/all_certificates')
def all_certificates():
return render_template('all_certificates.html', title='all_certificates', all_cert = all_cert)
Это работает, когдаЯ выполняю команду "flask run", но если я вхожу в python3 -m unittest test.py, я получаю сообщение об ошибке:
File "/home/marka/Документы/Practice/test.py", line 4, in <module>
import routes
File "app/routes.py", line 30, in <module>
@app.route('/index')
File "/home/marka/Документы/Practice/venv/lib/python3.5/site-packages/flask/app.py", line 1251, in decorator
self.add_url_rule(rule, endpoint, f, **options)
File "/home/marka/Документы/Practice/venv/lib/python3.5/site-packages/flask/app.py", line 67, in wrapper_func
return f(self, *args, **kwargs)
File "/home/marka/Документы/Practice/venv/lib/python3.5/site-packages/flask/app.py", line 1222, in add_url_rule
'existing endpoint function: %s' % endpoint)
AssertionError: View function mapping is overwriting an existing endpoint function: index
Я нашел похожую ветку на форуме: AssertionError: Просмотр функцииотображение переписывает существующую функцию конечной точки: main , но я не знаю, как применить ее в моем коде.Что вызвало ошибку?Как по-разному использовать декораторы?
Я попытался переименовать индекс функции:
def index():
index.func_name = func.func_name
return render_template('index.html', title='Home', all_cert = all_cert)
, тогда я получаю ошибку:
File "/home/marka/Документы/Practice/test.py", line 4, in <module>
import routes
File "app/routes.py", line 33
return render_template('index.html', title='Home', all_cert = all_cert)
^
IndentationError: unindent does not match any outer indentation level
В тесте я быЛюблю проверять функции, которые хранят сертификат и проверять его действительность.Весь мой код в https://github.com/Butyrate/CertificationCenter.
Спасибо.