自动化测试工具-pytest

安装pytest

在cmd中运行命令

pip install pytest

py测试文件必须以test_开头(或则_test结尾)

pytest测试类必须以Test开头,并且不能有__init__方法

测试方法必须以test_开头

断言必须使用assert

import pytest

calss Test1:
    def test_c01(self):
        print("Hello")
        assert 1==1 #断言
    def test_c02(self)
        print("Holle2")
        assert 2==3

if __name__=='__main__':
    pytest.mian(['test_pytest20240804.py','-s']) #文件路经   -s允许执行print语句




"""
用例运行结果返回有两中
第一种:unittest,返回每条用例的运行结果
第二种:pytest,不会逐条返回,只会返回用例执行成功


修改运行结果方法:进入python设置修改
settings->python integrated tools,选择deault testl runner
"""

使用装饰器
import pytest


@pytest.fixture(scope='class')  #装饰器,声明下面的函数setup函数  setup表示初始化函数
"""
scope=function  默认级别每个方法或函数跑一次
scope=class     每个类执行一次
scope=module    每个模块执行一次
scope=session   每个项目目录执行一次  session级别,setup函数的代码写在conftest.py里,项目目录里的所有文件一共执行一次

"""
def fun1():
    print('开始测试')
    yield #声明下面变量是teardown的用法
    print('测试完毕')


calss Test1:

#把装饰器当作一个值来使用
    def test_c01(self,fun1):
        print("Hello")
        assert 1==1 #断言
    def test_c02(self)
        print("Holle2")
        assert 2==3

if __name__=='__main__':
    pytest.mian(['test_pytest20240804.py','-s']) #文件路经   -s允许执行print语句

pytest运行当前文件夹下所有文件,创建文件test_all.py,然后运行代码

#test_all

import pytest

if __name__=='__main__':
    pytest.main(['./','-sv']) #./表示当前目录  -s表示执行打印语句  -v 表示更加详细的日志




"""
运行所用文件要用unittest
"""

setup和teardown的用法

pytest---setup和teardown简单用法 - 测试-安静 - 博客园 (cnblogs.com)

"""
在pytest中
setup是在用例执行前执行的语句
teardown是在用例而结束后执行的语句
"""


import putest
class test_pytest():
    def setup():
        print('开始执行')

    def teardown():
        print('结束执行')


    def test_01():
        print('用例1')

    def test_02():
        print('用例2')


if __name__=='__main__':
    pytest.main('-s','文件路径')

yield返回数据

yield本身也可以当作类似于reture的用法,返回一个值出去,但是yield不结束函数

import pytest


@pytest.fixture(sccope='module')
def fun1():
    print('开始测试')
    a='Hello'
    yield a  #声明下面的代码是teardown的用法\
"""
yield可以当作return使用,返回一个值,但是yield不结束函数

"""
    print('测试完毕')


calss Test1:
    def test_01(self,fun1):
        assert fun1='Hello'
    def test_02(self,fun1):
        assert 2==3

装饰器:数据驱动测试多条用例
class Test3:
    @pytet.mark.paranetrize('result','real_result',[[1,2],[2,3],[4,5]])#声明下面函数,要参数化了
"""
result 实例化 变量1
real_result 实例化 变量2
[[1,2],[2,3],[4,5]]  可以使用元组或列表 相当于变量1和变量2的值,书写方式必须是[[],[]]这样的
"""



    def test_03(self,result,real_result)
        assert reslt==real_result


if __name__=='__main__':
    pytest.main(['test_pytest2020.py','-s'])
pytest数据驱动

数据驱动是csv参数化,也是批量执行测试用例

list=[[1,2],[3,4],[5,6],[1,1]]
class Test2:
    @pytest.mark.parametrize("result","real_result",list)
    def test_c03(self,result,real_result):
        assert result==real_result
        # try:
        #     result==real_result
        # except:
        #     logger.debug("{}和{}结果不相等".format(result,real_result))




if __name__=="__main__":
    # a = Test1()
    # a.my_function(0, 0, 0)
    # print(a)

    pttest.main("test_pytest.py","-s")
allure安装

将allure.zip押解到一个文件目录中,并将安装目录配置到path中

allure运行需要jdk环境

创建allure和pytest桥梁 pip install allure-pytest

使用allure在当前目录生成一个报告

generate生成测试报告

        语法:generate 测试报告存放路径  -o 在测试报告存放路径下创建测试报告文件,--n

  •    测试报告路径,如果没有路径文件,会新建一个路径文件
  •   -o      在指定的测试报告路径下,生成测试报告文件
  •     --clean 在生成新的测试报告文件之前清楚测试报告,--clean也可以写成-c     

server生成测试报告临时文件,然后使用默认浏览器打开测试报告

        语法,server 测试报告存放路径/测试报告文件

open

import pytest
import os

class Test3:
    @pytet.mark.paranetrize('result','real_result',[[1,2],[2,3],[4,5]])#声明下面函数,要参数化了
"""
result 实例化 变量1
real_result 实例化 变量2
[[1,2],[2,3],[4,5]]  可以使用元组或列表 相当于变量1和变量2的值,书写方式必须是[[],[]]这样的
"""



    def test_03(self,result,real_result)
        assert reslt==real_result


if __name__=='__main__':
    pytest.main(['test_pytest2020.py','-vs','alluerdir','./report']) #alluerdir可以指定一个路径存放测试测试结果,也可以不指认存放路径。   ./report测试结果存放路径
    
    os.system('allure generate ./report -o ./report/report --clean')

    #os。system生成测试报告
     allurl调用allure模块
     generate指定文件生成测试测试报告,report被指定生成测试报告的文件夹
     generate后面可以更两个参数,-c,在测试报告生成之前,清楚历史
                                -o,指定文件生成测试报告
                                 -o ./report/report,表示在report文件下生成report测试报告文件
      --clean清楚测试之前的测试记录


            
        ./ 表示当前文件的的上一层目录,
        ../表示当前目录的上一层目录的上一层目录





    os.system('allure server ./report/report )
                                  

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值