Python 测试重用性最佳实践

Python 测试重用性最佳实践,python,pytest,Python,Pytest,假设我正在RESTful服务器上测试用户交互过程。我的许多测试都要求我的数据库中有一个有效的用户,当然我想测试用户的创建。因此,在py.test中,我将编写如下内容: def test_user_creation(): '''user creation goes here''' def test_user_update_values(): '''should create an user and validate the new values''' 问题是,重用创建过程的最佳

假设我正在RESTful服务器上测试用户交互过程。我的许多测试都要求我的数据库中有一个有效的用户,当然我想测试用户的创建。因此,在py.test中,我将编写如下内容:

def test_user_creation():
    '''user creation goes here'''

def test_user_update_values():
    '''should create an user and validate the new values'''

问题是,重用创建过程的最佳实践是什么?固定装置?调用第一个测试用例并将用户返回到第二个测试用例?还是为每个测试复制所有内容?如果您需要重构部分代码,迫使您修改所有测试,那么后面的替代方案(尽管更为孤立)可以是PITA。

这一切都取决于首选项,在这种情况下,我认为fixture是您的最佳选择。尽管您也可以使用参数化测试:

示例来自:

from datetime import datetime, timedelta

testdata = [(datetime(2001, 12, 12), datetime(2001, 12, 11), timedelta(1)),
            (datetime(2001, 12, 11), datetime(2001, 12, 12), timedelta(-1)),
            ]


@pytest.mark.parametrize("a,b,expected", testdata)
def test_timedistance_v0(a, b, expected):
    diff = a - b
    assert diff == expected