我是第一次使用fixture 模块,试图获得一组更好的fixture 数据,这样我就可以使我们的功能测试更加完整。
我发现夹具模块有点笨拙,我希望有更好的方法来做我正在做的事情。这是 Python 2.7 中的 Flask/SQLAlchemy 应用程序,我们使用鼻子作为测试运行程序。
所以我有一组员工。员工有角色。有一些页面具有相当复杂的权限,我想确保对这些页面进行测试。
我创建了一个具有每种类型角色的数据集(我们的应用程序中大约有 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)
有没有办法生成夹具数据,这样我的开发人员就不必记住每次添加角色时都在夹具上添加一行?我们有所有角色的规范列表作为应用程序其他地方的配置,所以我有。
我不喜欢任何这个或夹具模块,所以我很高兴听到建议!