Unittest框架

你们自动化用例是怎么管理的

  1. 所有用例都是放在 test_case的目录下的统一管理的。
  2. 每个某块一个.py文件,数据独立放在excel表格中
  3. 所有的具体用例脚本都是依据 unittest来编写的,利用ddt模型的装饰器来引用数据
  4. 然后跑用例这块,主要用的是 unittest框架来统一加载用例,并执行用例的.

如果要全量跑,调用 unittest中的 defaultTestLoader.discover这个函数来

加载 test_case目录下的所有.py文件。

WebUI自动化都用到过哪些库

Selenium库 里面封装了丰富的对浏览器,页面元素进行操作的方法。

Xlrd库 主要用来实现对excel表格数据进行读取的APl

Pymysql库 主要用来操作数据库的

Ddt库 主要用来实现数据驱动的

Re库 主要用来提取html页面数据的

Unittest库 主要用来编写用例,管理用例,执行用例的。

Unittest框架的原理

Unittest框架有几个大组件,1.测试固件( setUp,tearDown)

2.测试用例 3.测试套件 4.加载器 5.运行器 6.测试结果

首先我们需要创建测试用例,然后利用加载器讲用例加载到测试套件中,并创建一个执行器,

去执行测试条件中的所有用例。

它可以帮我们进行管理用例,统计加载执行用例,批量跑用例。

Unittest框架有哪些组件

test fixture(测试固件):

包含一个 Setup()方法/函数,tearDown()方法/函数,用例执行之前都会先执行 Setup()方法/函数主要是完成一些准备初始化的工作,比如创建临时的数据库,文件和目录,用例数据读取,浏览器的打开等,用例执行完成之后,会执行 tearDown()方法/函数,完成一些清理回收的工作,比如数据库断开,关闭浏览器。

(1)比如说在这个测试用例中需要访问数据库,那么可以在seUp()中建立数据库连接以及进行一些初始化,在 tearDown()中清除在数据库中产生的数据,然后关闭连接,注意 tear Down的过程很重要,要为以后的 TestCase留下一个干净的环境。

test case(测试用例)

什么是测试用例呢?

就是一个完整的测试流程包括测试前准备环境的搭建( setUp),以及测试后环境的还原( tearDown),还有包括用例方法,每个用例方法都必须要以test开头。

test suite(测试套件)

多个测试用例的集合就是 suite,一个 suite可以包含多个测试用例,也可以嵌套suite.可以通过 addTest()方法手动增加 TestCase,也可通过 TestLoader自动添加TestCase, TestLoader在添加用例时,会没有顺序。

test runner(运行器)

用来执行测试套件中测试用例的,最终执行完成之后会生成一个测试结果。

TestLoader(加载器):用来加载用例,把用例加载到测试套件中

Test Result(测试结果):包括运行了多少测试用例,成功了多少,失败了多少等信息。

Unittest框架如何使用

  1. 导包
import unittest
from selenium import webdriver
import ddt

2.定义一个类继承 unittest.TestCase基类

重写 setUp(),tearDown()方法

3.setUp()方法实现一个初始化的准备工作,比如,实例化 webdriver对象,对 driver进行初始化配置,连接数据库…

4.tearDown()方法实现释放资源的任务。

编写用例方法,用例方法必须以test开头

  1. Unittest如何去运行多个文件或者整个目录

因为我们用例全部是放在 test_case目录下统一管理的,基本每个某块都是一个.py文件,要全量跑的话,需要调用 unittest.default.discover()函数,指定用例目录的路径,加载所有的.py文件,它会自动创建测试套件,井把用例加入测试套件中,然后利用unittest.TestRunner()创建一个执行器利用这个执行器去运行测试雷件中的所有用例。

如何生成自动化测试报告

我们当时用的是 HtmIReport这个库来生成自动化测试报告的。

安装

pip install HTMLReport

使用方法

# 测试用例执行器

runner= HTMLReport.TestRunner(

report_file_name='test’, #报告文件名,如果未赋值,将采用"test+时间戳"

output_path='report’, #保存文件夹名,默认" report"

tite=’测试报告’, #报告标题,默认"测试报告"

description=’无测试描述’ #报告描述,默认"测试描述"

thread_count=1#并发线程数量(无序执行测试),默认数量 1

thread_start_wait=3#各线程启动延迟,默认0s

sequential_execution=False. #是否按照套件添加( addTests)顺序执行,

#会等待一个 addTests执行完成,再执行下一个,默认 False

#如果用例中存在 tearDownClass,建议设置为True,

#否则 tearDownClass将会在所有用例线程执行完后才会执行

# lang='e

lang='cn' #支持中文与英文,默认中文


#执行测试用例套件

runner.run(suite)