我的测试点是登录web-app,创建表条目,批准它,检查条目状态,删除它并注销。因为很少有类似的测试用例具有常见的前置条件/后置条件,所以我决定创建灯具(scope=function
)。我的代码(几乎简化为几十行)看起来像这样:
@pytest.fixture
def create_new_entry():
# code for new entry creation using POST-request with python-requests(pre-condition)
@pytest.fixture
def login():
# get to URL and complete authorization with Selenium
@pytest.fixture
def tear_down(request)
def logout_remove():
# logout from web-app with Selenium. Remove entry from table using POST-request with python-requests (post-condition)
request.addfinalizer(logout_remove)
def test_1(create_new_entry, login, tear_down):
# code to approve entry
assert # whether entry approved or not
代码有效,但由于某些原因,测试执行需要花费几分钟的时间,而不是直接在测试中使用相同的代码(来自灯具):
def test_1():
# code for new entry creation using POST-request with python-requests(pre-condition)
# get to URL and complete authorization with Selenium
# code to approve entry
assert # whether entry approved or not
# logout from web-app with Selenium. Remove entry from table using POST-request with python-requests (post-condition)
所以我想知道:pytest
灯具需要这么多时间来执行还是有办法缩短这段时间是否正常?
答案 0 :(得分:0)
这真的取决于你的测试代码是如何运行的,我的意思是它有多少操作和集成。 我认为pytest不会花费太多时间来重新定义范围,除非你有其他服务,如mysql和真正的API请求,这似乎是你的情况。
也许你可以模拟你的请求会话或使用vrc lib。
希望它有所帮助。