Py.Test测试可重用性最佳实践

时间:2015-07-04 14:42:01

标签: 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'''

问题是,重用创建过程的最佳做法是什么?夹具?调用第一个测试用例并将用户返回到第二个测试用例?或者为每个测试复制一切?如果您需要重构代码的某些部分,迫使您修改所有测试,那么后来的替代方案虽然更加孤立,但可以是PITA。

1 个答案:

答案 0 :(得分:2)

这一切都归结为偏好,在这种情况下,我会说灯具是你最好的选择。虽然您也可以使用参数化测试:

示例来自:https://pytest.org/latest/example/parametrize.html

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