【Web UI自动化测试】Web UI自动化测试之框架篇(全网最全)

本文大纲截图:

  • UnitTest框架:

  •  PyTest框架:

 

框架: 框架英文单词 framework,为解决一类事情的功能的集合。需要按照框架的规定(套路)去书写代码。

一、UnitTest框架介绍【文末分享自动化测试学习资源】

1、什么是UnitTest框架?

  • 概念:UnitTest是python自带的一个单元测试框架,用它来做单元测试
  • 自带的框架:不需要单独按照,只要安装了 python就可以用
  • 第三方框架:想要使用 需要先安装后使用(如:pytest)
  • 单元测试框架:主要用来做单元测试,一般单元测试是开发做的。对于测试来说,UnitTest 框架的作用是自动化脚本(用例代码)执行框架(使用UnitTest框架来管理 运行多个测试用例的)

2、为什么使用UnitTest框架?

  • 1)能够组织多个用例去执行

  • 2)提供丰富的断言方法(让程序代码代替人工自动的判断预期结果和实际结果是否相符)

  • 3)能够生成测试报告

  • 4)UnitTest框架对于测试来说的作用是:自动化脚本执行框架(使用 UnitTest框架来管理运行多个测试用例的脚本)

3、UnitTest框架核心组成要素
1)TestCase【最核心的模块】

  • TestCase(测试用例),这个测试用例是UnitTest框架的组成部分,不是手工和自动化中所说的用例(Test Case)
  • 主要作用:每个TestCase(测试用例)都是一个代码文件,在这个代码文件中 来书写 真正的用例代码
     

2)TestSuite

  • TestSuite(测试套件),用来 管理、组装(打包)多个 TestCase(测试用例)的

3)TestRunner

  • TestRunner(测试执行,测试运行),用来 执行 TestSuite(测试套件)的

4)TestLoader

  • TestLoader(测试加载),功能是对 TestSuite(测试套件)功能的补充,管理、组装(打包)多个 TestCase(测试用例)的

 

5)Fixture

  • Fixture(测试夹具),书写在TestCase(测试用例)代码中,是一个代码结构,可以在每个方法执行前后都会执行的内容
  • 每个用例中重复的代码就可以写在 Fixture 代码结构中,只写一遍,但每次用例方法的执行,都会执行Fixture中的代码
  • 举例:登录的测试用例

             1、打开浏览器

             2、输入网址
 

4、UnitTest框架实践

4.1 TestCase(测试用例)

介绍:

  • 1)每个 TestCase(测试用例)都是一个代码文件,在这个代码文件中 来书写真正的用例代码

  • 2)代码文件的名称必须按照标识符的规则来书写(可以将代码的作用在文件的开头又多行注释说明)

注意:

  • 1)代码文件的命名规范

    • 1>代码文件名字不能以数字开头

    • 2>代码文件名字中不能有空格

    • 3>代码文件名字不能有中文

    • 4>代码文件名字由字母、数字、下划线组成,且不能以数字开头

  • 2)代码运行没结果

    • 原因:右键运行没有 unittest for xxx 的提示 而出现的问题

    • 解决方案1:重新建一个代码文件,将写好的代码复制进去

    • 解决方案2:删除已有的运行方式

  • 3)没有找到用例:测试方法中不是以 test_ 开头的,或者单词写错了

步骤:

  • 1)导包 import unittest

  • 2)自定义测试类

  • 3)在测试类中书写测试方法

  • 4)执行用例

代码:

# 1、导包
import unittest
 
# 2、新建测试类,需要继承 unittest 模块中的 TestCase类 即可
class TestDemo1(unittest.TestCase):
    # 3、书写测试方法(即 用例代码,目前没有真正的用例代码,使用 print 代替)
    # 注意:书写要求;测试方法 必须以 test_ 开头(本质以 test 开头)
    def test_method1(self):
        print("测试方法1")
 
    def test_method2(self):
        print("测试方法2")
 
class TestDemo2(unittest.TestCase):
    def test_method3(self):
        print("测试方法3")
 
    def test_method4(self):
        print("测试方法4")
 
# 4、执行用例(方法)
# 4.1 将光标放在 类名后边 运行,会执行类中的 所有测试方法
# 4.2 将光标放在 方法名后边 运行,只执行当前的方法

4.2 TestSuite & TestRunner(测试套件&运行)

介绍:

  • 1)TestSuite(测试套件):管理、打包、组装 多个 TestCase(测试用例) 文件

  • 2)TestRunner(测试执行):执行 TestSuite(测试套件)

步骤:

  • 1)导包 import unittest

  • 2)实例化套件对象(创建套件对象)

  • 3)使用套件对象 添加 用例方法

  • 4)实例化运行对象(创建运行对象)

  • 5)使用运行对象 去执行 套件对象

实例化套件对象并添加测试用例:

# 导包
import unittest
from UnitTest_study.hm01_unittest import TestDemo
 
# 实例化套件对象
suite = unittest.TestSuite()
# 方法1:单个添加测试用例(需要导包TestDemo)
suite.addTest(TestDemo('test_001'))
suite.addTest(TestDemo('test_002'))
# 方法2:批量添加测试用例(需要导包TestDemo)
suite.addTest(unittest.makeSuite(TestDemo))

实例化运行对象:

# 导包
import unittest
# 实例化运行对象
runner = unittest.TextTestRunner()
# 运行测试套件
runner.run(suite)

查看测试执行结果的方法:

 

  • 说明: .运行通过;F用例不通过;E用例代码有问题

代码:

方法一:使用套件对象单个(单个方法)添加用例并运行

  • 添加用例基本格式:unittest.TestSuite().addTest(类名('方法名'))
  • 特点:逐条添加测试用例
  • 运行用例基本格式:unittest.TextTestRunner().run(测试用例集)
# 1、导包
import unittest
from unittest_testcase import TestDemo1, TestDemo2
 
# 2、实例化套件对象(创建套件对象)
suite = unittest.TestSuite()
 
# 3、使用套件对象 添加 用例方法
suite.addTest(TestDemo1('test_method1'))
suite.addTest(TestDemo1('test_method2'))
suite.addTest(TestDemo2('test_method1'))
suite.addTest(TestDemo2('test_method2'))
# 4、实例化运行对象(创建运行对象)
runner = unittest.TextTestRunner()
# 5、使用运行对象 去执行 套件对象
# 格式:运行对象.run(套件对象)
runner.run(suite)

方法二:使用套件对象批量(单个类)添加用例并运行

  • 添加用例基本格式:unittest.TestSuite().addTest(unittest.makeSuite(类名))
  • 特点:批量添加测试用例
  • 运行用例基本格式:unittest.TextTestRunner().run(测试用例集)
    # 1、导包
    import unittest
    from unittest_testcase import TestDemo1, TestDemo2
     
    # 2、实例化套件对象(创建套件对象)
    suite = unittest.TestSuite()
     
    # 3、使用套件对象 添加 用例方法
    suite.addTest(unittest.makeSuite(TestDemo1))
    suite.addTest(unittest.makeSuite(TestDemo2))
    # 4、实例化运行对象(创建运行对象)
    runner = unittest.TextTestRunner()
    # 5、使用运行对象 去执行 套件对象
    # 格式:运行对象.run(套件对象)
    runner.run(suite)

4.3 TestLoader(测试加载)

介绍: TestLoader(测试加载),和 TestSuite 的作用一样,是对 TestSuite 功能的补充,用来管理组装(打包)多个 TestCase。在一个项目中 TestCase(测试用例)的代码,一般放在一个单独的目录(case)中

步骤

  • 1)导包 import unittest
  • 2)实例化测试加载对象并添加用例(得到的是 suite 对象)
  • 3)实例化 运行对象
  • 4)运行对象执行套件对象
     

代码:

  • 基本格式一:suite = unittest.TestLoader().discover('case', 'test_*.py')
  • 基本格式二:suite = unittest.defaultTestLoader.discover('case', 'test_*.py')
# 导包
import unittest
 
# 方法1:实例化对象并添加测试用例
suite = unittest.TestLoader().discover('case', 'test_*.py')
# 方法2:实例化对象并添加测试用例(说明:插件代码中有一句:defaultTestLoader = Test
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值