Part One
最近对pytest比较感兴趣,看了pytest的文档classic xunit-style setup,这里做个小结,直接看代码。
1 | # content of test_websites.py |
pytest中的setup/teardown还有一个更推荐的实现方法是去使用pytest.fixture特性,上面这种经典的setup/teardown,pytest表示也会继续支持。下面准备总结下用pytest.fixture实现setup/teardown的方法。
Part Two
下面内容是阅读文档pytest fixtures: explicit, modular, scalable的一些总结,pytest fixture功能很丰富,功能远不止用来构建测试中传统的setup/teardown。
但是还是先看下用pytest.fixture特性写的setup/teardown,据stakoverflow上一哥们说,这还是目前的最佳实践。
1 | import time |
这样写看起来有点pythonic的味道,我理解写这样fixture形式的setup/teardown函数,主要还是给那些需要打开然后关闭的资源,比如上面例子中的浏览器driver,确实需要收尾(driver.quit()
)。
可能还有其他应用,比如写一个数据库查询的函数,就可以把连接数据库,获得数据查询句柄,yield 句柄,关闭数据库句柄,关闭数据连接写成一个fixture,这样代码应该清爽多了。
1 |
|
fixture如果不用到yield,则只是把fixture函数里返回的值,作为参数给到使用fixture的函数,代码如下
1 |
|