UnitTest框架学习

UnitTest框架

Python自带的一个作为单元测试的测试框架,相当于Java中的JUnit,随着自动化技术的成熟,由UnitTest再衍生出PyTest,PyTest可以完美结合UnitTest来实现自动化。

基本应用

1、环境搭建

Python中已经直接加载了UnitTest框架,无需额外安装

2、四大组件

# unittest四大组件:
# a. text fixture: setUp(前置条件) tearDown(后置条件) 用于初始化测试用例及清理和释放资源,只需定义一次
# b. test case: 测试用例,通过集成unittest.TestCase,来实现用例的继承
# 在unittest中,测试用例都是通过test来识别的(def test_xxxx())
# c. test suite: 测试套件,也成为测试用例集
# d. test runner: 运行器,一般通过runner来调用suite去执行测试

3、UnitTest运行机制

通过在main函数中,调用unittest.main()运行所有内容

UnitTest自动化测试实现

1、自动化测试减少冗余,便于维护

2、ddt数据驱动

  • ddt(data-driver tests),在实际测试中,单个测试是需要多种不同的条件(测试数据)对其进行测试的

  • ddt中最基本的应用:在class前定义@ddt,用于表示要使用ddt了,再基于实际的应用,选择对应的装饰器来使用即可,说白了,就是一个装饰器

    • data用于设定参数
    • unpack用于解析参数

    ddt对于数据的解析方式,解析一个,传参一个

    file_data是ddt中用于读取yml文件的装饰器

# coding:utf-8
import unittest
from selenium import webdriver
import time
from ddt import ddt,data,unpack,file_data
import yaml

def readFile():
    # 定义一个list集合
    params = []
    # 通过open打开参数文档,以只读的形式,编码格式为utf-8,防止中文解析
    file = open('params.txt','r',encoding='utf-8')
    for line in file.readlines():
        # list中添加元素(在这个过程删除回车并以','对字符进行分割)
        params.append(line.strip('\n').split(','))
    return params

@ddt
class forTestTest(unittest.TestCase):
    # 加载驱动,打开相应浏览器
    def setUp(self) -> None:
        self.driver = webdriver.Chrome("C:/Users/Lulu/Desktop/job prepares/自动化测试/chromedriver.exe")
        # self.driver.get('http://www.baidu.com')
     # pass
    # 进行测试用例的释放
    def tearDown(self) -> None:
        time.sleep(2)
        self.driver.quit()
     # pass

     # 通过ddt中的data实现重复的数据驱动测试,使得程序的维护更加简便
     # **表示字典,*表示元组,无*表示字符串
    @data(*readFile())
    @unpack
    def test_1(self,url,txt):
        self.driver.get(url)
        self.driver.find_element_by_id('kw').send_keys(txt)
        self.driver.find_element_by_id('su').click()


    # file_data是ddt中用于读取yml文件的装饰器
    @file_data('ppp.yml')
    def test_2(self,txt):
        print(txt)
        print('********************')

if __name__ == '__main__':
    unittest.main()
# params.txt文件
http://www.baidu.com,CSDN
http://www.baidu.com,博客园
# ppp.yml文件
name: 'name111'
info: 'info222'

测试用例test_1的输出结果为浏览器打开两次分别对CSDN、博客园进行搜索,且2秒后自动关闭

测试用例test_2测试用例输出结果如下
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值