Я впервые работаю с модулем фикстуры, пытаясь получить лучший набор данных фикстуры, чтобы сделать наши функциональные тесты более полными.
Я нахожу модуль приспособления немного неуклюжим, и я надеюсь, что есть лучший способ сделать то, что я делаю. Это приложение Flask/SQLAlchemy на Python 2.7, и мы используем нос в качестве средства запуска тестов.
Итак, у меня есть набор сотрудников. У сотрудников есть роли. Есть несколько страниц с довольно сложными разрешениями, и я хотел бы убедиться, что они протестированы.
Я создал набор данных, в котором есть роли каждого типа (в нашем приложении около 15 ролей):
class EmployeeData(DataSet):
class Meta:
storable = Employee
class engineer:
username = "engineer"
role = ROLE_ENGINEER
class manager:
username = "manager"
role = ROLE_MANAGER
class admin:
username = "admin"
role = ROLE_ADMIN
и что я хотел бы сделать, так это написать функциональный тест, который проверяет, что только нужные люди могут получить доступ к странице. (Настоящие разрешения намного сложнее, я просто хотел показать вам игрушечный пример.)
Что-то вроде этого:
def test_only_admin_can_see_this_page():
for employee in Employee.query.all():
login(employee)
with self.app.test_request_context('/'):
response = self.test_client.get(ADMIN_PAGE)
if employee.role == ROLE_ADMIN
eq_(200, response.status_code)
else:
eq_(401, response.status_code)
logout(employee)
Есть ли способ сгенерировать данные фикстуры, чтобы моим разработчикам не приходилось помнить о добавлении строки в фикстуры каждый раз, когда мы добавляем роль? У нас есть канонический список всех ролей в качестве конфигурации в другом месте приложения, поэтому он у меня есть.
Я не привязан ни к чему из этого или к модулю крепления, поэтому я рад услышать предложения!