在Pytest的测试框架中,也是内置了fixture的功能,这些内置的fixture在特定的测试场景下能够提高测试的效率,另外一个好处是它是内置的fixture,就不需要单独再写fixture了。就像Python语言中内置的函数一样,直接拿来调用实现想要实现的功能就可以了。下面具体来看这些内置的fixture它的含义以及在测试场景下的案例应用。
一、tmpdir
内置的fixture负责在测试开始前创建文件,和测试结束后删除临时文件。这样的测试场景也是比较常见的,比如测试过程中需要存放一个临时数据,那么既然是存放临时数据就需要临时目录,测试结束后临时文件也删除。就以一个登录的token为案例来演示它的应用,熟悉接口测试的同学都知道,token是登录成功后服务端返回给客户端随机的一个密钥,那么客户端下次请求服务端的时候,给服务端的token与服务端返回给客户端的一致,如果不一致,客户端就会返回到登录的页面,要起登录,见如下的案例测试代码:
import pytest
def login(username,password):
if username=='wuya' and password =='admin':
return 'dfghjkerty45fdsgudf'
def order(token):
if token=='dfghjkerty45fdsgudf':
return True
else:
print('请登录系统')
def test_order_tmpdir(tmpdir):
token=tmpdir.join('token.txt')
token.write(login('wuya','admin'))
assert order(token.read())==True
具体看测试的函数test_order_tmpdir(),首先创建一个临时文件,往临时文件写入token,然后断言验证,order()函数请求,它的参数与login()函数返回的参数一致,所以结果是True,当然这地方还可以来一个失败的测试场景,也就是order()的token与login()的token不一致情况,见完善后的源码:
import pytest
de