pytest_01_编写规则,运行规则,用例筛选,参数依赖,用例编写的前,后置

1、编写规则:
测试方法以test_.py的文件;test_开头或者 _test的函数结尾

# 1、普通写法
def test_register(self):
	assert 1==2
#2、类常规写法
class TestRegister():
    def test_register(self):
          assert 1==2
#3、可以兼容unittest.TestCase
class TestRegisterWithUnittest(unittest.TestCase):
    def test_register(self):
          assert 1==2

2、运行规则

#2.1、在项目测试case目录下执行,自动收集该目录下的所有pytest的用例:
pytest
#2.2、执行后,需要生成测试报告,生成html的格式的测试报告,并命名为output.html【pip install pytest-html】
pytest --html=output.html
#2.3、通过文件统一执行
import  pytest
import time

# 获取时间戳
time = time.strftime("%Y_%m_%d_%H-%M-%S")
pytest.main([f"--html={time}report.html"])

#2.4、统一文件执行的优化
卸载pytest-html [pip uninstall pytest-html]
下载 [pip install pytest-testreport]
import pytest

pytest.main(['--report=testcase_reportname.html',
             '--title=testcase_reporttitle',
             '--tester=testcase_reportpreson',
             '--desc=desc',
             '--template=1 or 2'])

3、用例筛选

# 可以在类上使用
@pytest.mark.smoke
class TestRegister():
    def test_register(self):
          assert 1==2

# 也可以在函数上使用
class TestRegister():
	@pytest.mark.smoke
    def test_register(self):
          assert 1==2
          
	@pytest.mark.smoke
	@pytest.mark.openapi
    def test_register2(self):
          assert 1==2
          
创建pytest.ini文件,将 【smoke】注册,使pytest可识别
; 该文件用于给pytestcase 作为分类
[pytest]
markers =
    smoke: 冒烟测试case时使用的
    openapi
    suite8
    oxi

运行:(仅运行smoke的所有case)
pytest -m "smoke"
pytest -m "smoke and openapi " [test_register2]
pytest -m "smoke or openapi "  [test_register,test_register2]

文件运行:
pytest.main([f"--html={time}report.html"],"-m","smoke")

4、参数依赖

class TestCase():
    @pytest.mark.parametrize("data", list_value)
    def test_01(self, data):
    	assert 1==2

5、用例编写的前,后置,仿造unittest的一种方式

# 1、函数的setup,和teardown
def setup_function():
	pass
def teardown_function():
	pass

# 2、类的setup,和teardown
@classmethod
def setup_class(cls):
	pass
@classmethod
def teardown_class(cls):
	pass

#3、module级别的setup,和teardown
def setup_module():
	pass
def teardown_module():
	pass

6、用例编写的前后置,是pytest的夹具形式

1、新建一个conftest.py的文件

import pytest
@pytest.fixture()
def testin():
    print("前置~~~")
    yield "testin 返回值"
    print("后置")
    
@pytest.fixture(scope="class")// 引用时,一个类就只会运行一次,这个函数
def testin():
    print("前置~~~")
    yield "testin 返回值"
    print("后置")

@pytest.fixture(scope="module")// module级别的
def testin():
    print("前置~~~")
    yield "testin 返回值"
    print("后置")
    
@pytest.fixture(scope="package")// 包,目录级别的
def testin():
    print("前置~~~")
    yield "testin 返回值"
    print("后置")

@pytest.fixture(scope="session")//整个流程只会有一次
def testin():
    print("前置~~~")
    yield "testin 返回值"
    print("后置")
    
@pytest.fixture(scope="session",,autouse=True)//整个流程只会有一次,且不需要饮用该夹具名称,该方法自动执行,且无返回值
def testin():
    print("前置~~~")

2、使用
【******使用没有返回值的fixture在函数上使用】
@pytest.mark.usefixture("testin","testin2") //就是使用夹具了
def test_002():
    assert  1 != 0

@pytest.mark.usefixture("testin") //每个函数都执行一遍
class test_case:
	def test_001():
    	assert  1 != 0
    	
    def test_002():
    	assert  1 != 0******使用有返回值的fixture在函数上使用】
1、将fixture的函数名称,直接作为参数传递,并直接使用,不需要调用,可以直接使用
2、如果返回多个值,则接受的为一组元祖数据
3、如果没有参数,也可以通过这种方式进行获取
def test_002(testin2):
    assert  1 != 0
if __name__ == '__main__':
    pytest.main()

7、使用精美的allure测试报告

  • 下载allure-commandline

  • 运行:pip install allure-pytest

  • 收集并运行测试报告:pytest --alluredir=output
    会把所有的测试结果保存至output里面,以json的形式

  • 生成html的测试报告:allure serve output

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值