网站后台生成html,网页设计收费标准需要多少钱,微信app网站建设,wordpress说说功能usefixtures与传fixture区别 如果fixture有返回值#xff0c;那么usefixture就无法获取到返回值#xff0c;这个是装饰器usefixture与用例直接传fixture参数的区别。
当fixture需要用到return出来的参数时#xff0c;只能讲参数名称直接当参数传入#xff0c;不需要用到re…
usefixtures与传fixture区别 如果fixture有返回值那么usefixture就无法获取到返回值这个是装饰器usefixture与用例直接传fixture参数的区别。
当fixture需要用到return出来的参数时只能讲参数名称直接当参数传入不需要用到return出来的参数时两种方式都可以。 1.函数或类里面方法直接传fixture的函数参数名称 pytest.fixture()
def test1():print(\n开始执行function)def test_a(test1):print(---用例a执行---)class TestCase:def test_b(self,test1):print(---用例b执行)if __name____main__:pytest.main([-s,test03.py])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/Test/test/test03.pytest session starts
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 2 itemstest03.py
开始执行function
---用例a执行---
.
开始执行function
---用例b执行
. 2 passed in 0.04s Process finished with exit code 0
2、fixture自动使用autouseTrue 当用例很多的时候每次都传这个参数会很麻烦。fixture里面有个参数autouse默认是False没开启的可以设置为True开启自动使用fixture功能这样用例就不用每次都去传参了 autouse设置为True自动调用fixture功能
pytest.fixture(autouseTrue)
def test1():print(\n开始执行function)def test_a():print(---用例a执行---)class TestCase:def test_b(self):print(---用例b执行)if __name____main__:pytest.main([-s,test03.py])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/Test/test/test03.pytest session starts
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 2 itemstest03.py
开始执行function
---用例a执行---
.
开始执行function
---用例b执行
. 2 passed in 0.04s Process finished with exit code 0
pytest.fixture(scopemodule, autouseTrue)
def test1():print(\n开始执行module)pytest.fixture(scopeclass, autouseTrue)
def test2():print(\n开始执行class)pytest.fixture(scopefunction, autouseTrue)
def test3():print(\n开始执行function)def test_a():print(---用例a执行---)def test_d():print(---用例d执行---)class TestCase:def test_b(self):print(---用例b执行---)def test_c(self):print(---用例c执行---)if __name____main__:pytest.main([-s,test03.py])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/Test/test/test03.pytest session starts
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 4 itemstest03.py
开始执行module开始执行class开始执行function
---用例a执行---
.
开始执行class开始执行function
---用例d执行---
.
开始执行class开始执行function
---用例b执行---
.
开始执行function
---用例c执行---
. 4 passed in 0.05s Process finished with exit code 0
3、使用装饰器pytest.mark.usefixtures()修饰需要运行的用例
pytest.fixture()
def test1():print(\n开始执行function)pytest.mark.usefixtures(test1)
def test_a():print(---用例a执行---)pytest.mark.usefixtures(test1)
class TestCase:def test_b(self):print(---用例b执行---)def test_c(self):print(---用例c执行---)if __name____main__:pytest.main([-s,test03.py])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/Test/test/test03.pytest session starts
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 3 itemstest03.py
开始执行function
---用例a执行---
.
开始执行function
---用例b执行---
.
开始执行function
---用例c执行---
. 3 passed in 0.05s Process finished with exit code 0
4、叠加usefixtures
如果一个方法或者一个class用例想要同时调用多个fixture可以使用pytest.mark.usefixture()进行叠加。注意叠加顺序先执行的放底层后执行的放上层。
pytest.fixture()
def test1():print(\n开始执行function1)pytest.fixture()
def test2():print(\n开始执行function2)pytest.mark.usefixtures(test1)
pytest.mark.usefixtures(test2)
def test_a():print(---用例a执行---)pytest.mark.usefixtures(test2)
pytest.mark.usefixtures(test1)
class TestCase:def test_b(self):print(---用例b执行---)def test_c(self):print(---用例c执行---)if __name____main__:pytest.main([-s,test03.py])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/Test/test/test03.pytest session starts
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 3 itemstest03.py
开始执行function2开始执行function1
---用例a执行---
.
开始执行function1开始执行function2
---用例b执行---
.
开始执行function1开始执行function2
---用例c执行---
. 3 passed in 0.04s Process finished with exit code 0