最全整理,Pytest自动化测试框架-用例参数/忽略用例/失败重试(实战)


前言

测试用例参数化

Pytest中装饰器@pytest.mark.parametrize(‘参数名’,list)可以实现测试用例参数化

如何使用?
第一个参数是字符串,多个参数中间用逗号隔开;
第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应;
传一个参数 @pytest.mark.parametrize(‘参数名’,list) 进行参数化;

传两个参数@pytest.mark.parametrize(‘参数名1,参数名2’,[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化
参数2_data[1])]) 进行参数化;

1、单参数数据驱动-1个参数1个值
示例代码:test_pytest.py

import pytest
# 一个参数一个值
@pytest.mark.parametrize("number", [0,1])
def test_case1(number):
    assert number==1
 
if __name__ == '__main__':
    pytest.main(["-s", "-v", "-k","test_pytest.py"])

2、多参数数据驱动-多参数多个值
示例代码:

import pytest
import time
@pytest.mark.baidu
class TestBaidu :
    def setup_method(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.base_url = "http://www.baidu.com/"
 
    @pytest.mark.parametrize('search_string,expect_string',[('iTesting','iTesting'),('helloqa.com','iTesting')])
    def test_baidu_search(self,search_string,expect_string):
        driver = self.driver
        driver.get(self.base_url + './')
        driver.find_element_by_id("kw").send_keys(search_string)
        driver.find_element_by_id("su").click()
        time.sleep(2)
        search_results=driver.find_element_by_xpath('//*[@id="1"]/h3/a').get_attribute('innerHTML')
        assert (expect_string in search_results) is True
 
    def teardown_method(self):
        self.driver.quit()
if __name__ == '__main__':
    pytest.main(["-m","baidu","-s", "-v", "-k","test_baidu.py"])

3、多个参数的混合使用
有点类似笛卡尔积的意思,示例代码如下:

import pytest
data1 = [1, 2]
data2 = ["AA", "123"]
data3 = ["A", "B", "C", "D", "E","F",'G']
 
 
@pytest.mark.parametrize("a", data1)
@pytest.mark.parametrize("b", data2)
@pytest.mark.parametrize("c", data3)
def test_case3(a, b, c):
    print(f"生成新的数据组合为:[{
      
      a} {
      
      b} {
      
      c}]")
 
if __name__ == '__main__':
    pytest.main(["-s", "-v", "-k","test_pytest.py"])

忽略测试用例and失败测试用例重试

1、忽略测试文件
使用–ignore参数忽略测试文件
目录结构:

C1

命令行命令参考:

python -m pytest --ignore=baiduTest/tests/test_start.py

2、忽略测试方法
@pytest.mark.skip
@pytest.mark.skipif 通过条件判断忽悠测试方法
test_skip.py文件

import pytest
def test_case01():
    print("我是测试用例1")
 
@pytest.mark.skip(reason="不执行该用例!!因为没写好!!")
def test_case02():
    print("我是测试用例2")
 
flag=1
@pytest.mark.skipif(flag==1,reason="按条件忽略测试文件")
def test_case03():
    print("我是测试用例3")
 
 
if __name__ == '__main__':
    pytest.main(['-s', '-v', "-q",'test_skip.py'])

3、失败用例重试

安装插件pytest-rerunfailures

pip install pytest-rerunfailures

代码示例:

import pytest
@pytest.mark.smoke
class TestSample():
    def test_qual(self):
        #通过断言模拟测试用例失败,
        assert 1==0
 
    def test_not_equal(self):
        assert 1!=0
 
 
if __name__ == '__main__':
    pytest.main(['-s', '-v', "-q",'test_demo.py'])

命令行输入:

pytest baiduTest/tests/test_demo.py --reruns 2      #失败重试2次

观察命令行面板输出:

C2

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有拼尽全力,才能看到生命的辉煌;只有不屈不挠,才能达到梦想的彼岸;只有坚持不懈,才能迎接成功的喜悦。奋斗吧,勇敢的追逐自己心中的光芒!

每一次拼搏都是奋斗的印记,每一天坚持都是成功的铺垫,只要心中有梦想,努力就会变成最美丽的风景,坚持不懈,我们终将达到辉煌的巅峰!

只有不屈的意志,才能破茧成蝶;只有坚定的信念,才能驱散黑暗。在困难面前不气馁,勇往直前,才能实现人生的辉煌与壮丽!奋斗吧,你就是那个改变世界的人!

猜你喜欢

转载自blog.csdn.net/x2waiwai/article/details/131751129
今日推荐