pytest学习

pip install pytest后,测试用例中import报错,纠结死了,找了半天才搞清楚这个虚拟环境解释器

https://www.jianshu.com/p/9866cea7c9f4

pytest中的前置和后置可以通过装饰器@pytest.fixture()来实现

可以定义一个conftest.py单独存放

#文件名是conftest.py
#conding=utf-8

import pytest

@pytest.fixture()
def myfixtureall():
    print("执行conftest.py myfixtureall")
    return "return myfixtureall"

@pytest.fixture()
def myfixture1():
    print("执行conftest.py myfixture1 前置")
    return "return myfixture 前置"
    yield
    print("执行conftest.py myfixture1 后置")
    return "return myfixture 后置"

@pytest.fixture(params=["参数1","参数2"])
def myfixture2(request):
    print("执行conftest.py myfixture2,%s" % request.param)
    return "return myfixture2,%s" % request.param

全局执行可以在测试用例里添加一行

pytestmark=pytest.mark.usefixtures("myfixtureall")

每个测试用例独自添加可以用注解或是传参方式

#test_Pytest.py文件
#coding=utf-8

import pytest

pytestmark=pytest.mark.usefixtures("myfixtureall")
params1=["love","hate"]
params2=["you","him"]

@pytest.fixture()
def myfixture1():
    print ("执行固件myfixture1")
    return "myfixture1"

@pytest.fixture()
def myfixture2():
    print ("执行固件myfixture2")
    return "myfixture2"

import pytest

class Test_Pytest1():

        def test_one(self,myfixture1):
                str = myfixture1
                print("test_one方法执行---%s" % str)
                assert 1==1

        def test_two(self,myfixture2):
                print("test_two方法执行---%s" % myfixture2)
                assert "o" in "love"

        def test_three(self,myfixture1,myfixture2):
                print("test_three方法执行---%s---%s" % (myfixture1,myfixture2))
                assert 3-2==1


class Test_Pytest2():

        @pytest.mark.parametrize("message1", params1)
        @pytest.mark.parametrize("message2", params2)
        def test_one(self,message1,message2):
                print("test_one方法执行---%s---%s" % (message1,message2) )
                assert 1==1

        def test_two(self):
                print("test_two方法执行" )
                assert "o" in "love"

        def test_three(self):
                print("test_three方法执行" )
                assert 3-2==1


if __name__=="__main__":
    pytest.main(['-s','test_fixtures.py'])

跳过测试用例可以用@pytest.mark.skip()或者@pytest.mark.xfail

写用例时可以根据场景给用例设置标签@pytest.mark.xxx  例如web和server这种

if __name__=="__main__":
    pytest.main(['-s','test_firstFile.py'])
    pytest.main(['-s','--lf','test_firstFile.py'])
    pytest.main(['-s','--ff','test_firstFile.py'])

--lf 【last fai】执行上次失败的用例

--ff【fail first】执行所有用例,失败的优先

pytest.main(['-s','-v','-n','3','test_firstFile.py'])

并行运行

pytest.main(['-s','-v','-n','3','--looponfail','test_firstFile.py'])

监听失败用例修改后自动运行

用allure2生成测试报告

jacoco查看覆盖率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值