1.unittest单元测试框架文件结构

unittest是python单元测试框架之一,unittest测试框架的主要文件结构:

File

  >report

  >all_case.py

>test_case

      >__init__.py

      >test_case1.....

      >public

          >__init__.py

          >login.py

          >loginout.py

test_case文件夹主要存放测试用例,且测试用例命名以test_开头

public文件夹是test_case文件夹的子文件夹,主要存放公共模块,例如登录退出模块

report文件夹主要存放在测试用例执行完成后生成的测试报告

all_case脚本文件是主要的执行脚本,该脚本集合所有测试用例,执行所有的测试用例

2.unittest框架的最简单结构

selenium + python自动化测试unittest框架学习(一)selenium原理及应用这篇中说道可以将录制的浏览器行为导出成指定的编程语言,如果我们先是通过Selenium ide录制后导出的python脚本,那么可以发现每一个脚本的都会有这样一个简单的结构,先忽略那些判断元素是否存在的函数。其基本的结构如下所示:

setUp()

tearDown()

test_case1()

unittest.main()

setUp:初始化函数,每一个测试用例执行之前都会执行一遍

tearDown:测试用例执行完成后的浏览器退出等清理操作

test_case1():编写的测试用例脚本

unittest.main():自动执行方法名为test_开头的方法

3.unittest测试框架优化结构2

单单一个脚本不可能包含所有的测试用例,所以不同的测试用例可以写成不同的测试用例脚本放置在test_case文件夹中,那么执行测试用例的时候我们需要一个测试套件TestSuite来加载所有的测试用例脚本,添加测试用例的方法addTest(),并且使用TextTestRunner运行测试脚本。

  • 先构造测试集

    • 实例化测试套件

      • suite=unittest.TestSuite()
    • 将测试用例加载到测试套件中。
      • suite.addTest(Test('test_case2'))
      • suite.addTest(Test('test_case1'))
  • 执行测试用例
    • 实例化TextTestRunner类

      • runner=unittest.TextTestRunner()
    • 使用run()方法运行测试套件(即运行测试套件中的所有用例)
      • runner.run(suite)

该结构的缺点是每一个测试用例的增加都要添加一条addTest()方法,这就增加自动化脚本上的繁琐,所以我们可以想办法自动加载符合条件的测试用例

4.unittest测试框架优化结构3

该结构简化了一些步骤,即不用先创建测试套件,然后通过添加测试用例的方式,将测试用例逐条加载,TestLoader下的discover方法可以递归查询其指定路径下的子目录下符合条件的测试用例加载。

test_dir = './'

discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')

执行测试用例

实例化TextTestRunner类

runner=unittest.TextTestRunner()

使用run()方法运行测试套件(即运行测试套件中的所有用例)

runner.run(discover)

5.unittest执行文件all_case.py代码结构如下:

# coding=utf-8
import unittest
import HTMLTestRunner
import time
from test_case.public import login def createsuit():
#创建测试用例集
testunit = unittest.TestSuite()
#判断是否为测试用例,自动加载测试用例到测试套件中
cslist = "D:\\fcj\\study\\seleniumtest\\test_case"
#discover方法定义
discover = unittest.defaultTestLoader.discover(
#测试用例放置的文件夹名
cslist,
pattern = 'test_*.py',
top_level_dir = None
) #discover方法筛选出来的用例,循环添加到测试套件中
for test_suite in discover:
testunit.addTests(test_suite)
print(testunit)
return testunit
alltestnames = createsuit() if __name__ == "__main__":
now = time.strftime('%Y-%m-%d-%H_%M_%S',time.localtime(time.time()))
#定义报告存放路径
filename = 'D:\\fcj\\study\\seleniumtest\\report\\'+now+'result.html'
fp = open(filename,'wb')
#定义测试报告
runner = HTMLTestRunner.HTMLTestRunner(
stream = fp,
title = u'A项目后台测试报告',
description = u'用例执行情况:'
)
#执行测试
runner.run(alltestnames)
fp.close()

selenium + python自动化测试unittest框架学习(二)的更多相关文章

  1. selenium + python自动化测试unittest框架学习(五)webdriver的二次封装

    因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...

  2. selenium + python自动化测试unittest框架学习(一)selenium原理及应用

    unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...

  3. selenium + python自动化测试unittest框架学习(三)webdriver元素操作(二)

    上一篇是元素的定位,那么定位元素的目的就是对元素进行操作,例如写入文本,点击按钮,拖动等等的操作 (1)简单元素操作 简单元素操作 find_element_by_id("kw") ...

  4. selenium + python自动化测试unittest框架学习(三)webdriver元素定位(一)

    1.Webdriver原理 webdirver是一款web自动化操作工具,为浏览器提供统一的webdriver接口,由client也就是我们的测试脚本提交请求,remote server浏览器进行响应 ...

  5. selenium + python自动化测试unittest框架学习(七)随机生成姓名

    在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机 ...

  6. selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点

    在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个mo ...

  7. selenium + python自动化测试unittest框架学习(六)分页

    接触的项目分页的形式是以下形式: 想要获取总页数后,遍历执行翻页的功能,但由于分页是以javascript方法实现的,每次点击确定按钮后,页面就回刷新,webelement元素过期无法遍历下一个进行翻 ...

  8. selenium + python自动化测试unittest框架学习(三)webdriver对页面其他控件操作(三)

    1.对话框,下拉框 (1)对话框的有两种,一种是iframe格式的,需要switch_to_iframe()进行定位,现在大部分的对话框是div格式的,这种格式的可以通过层级定位来定位元素,先定位对话 ...

  9. Selenium终极自动化测试环境搭建(二)Selenium+Eclipse+Python

    Selenium终极自动化测试环境搭建(二)Selenium+Eclipse+Python 前面举例了Selenium+Eclipse+Junit+TestNG自动化测试环境的搭建,在前一篇的基础上, ...

随机推荐

  1. 网站压力测试 工具webbench

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好用,安装使用也特别方便,并且非常小. 主要是 -t 参数用着比较爽,下面参考了张宴的文章 ...

  2. 动态页面技术之JSP

    1.什么是JSP技术 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.许多公司参与一起 ...

  3. HDU 2041--超级楼梯(递推求解)

    Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?   Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每 ...

  4. 【转】Eclipse,MyEclipse快捷键及字体设置

    1.如何调节Eclipse下console输出字体的大小?         打开window - preferences-- general - appearance - colors and fon ...

  5. Windows安装ActiveMQ记录

    1.下载压缩包(activeMQ应用要基于jdk服务上,安装本软件时,最好已经安装了jdk并且配置好了环境变量) 下载5.12.2版本:http://activemq.apache.org/activ ...

  6. python模拟登陆豆瓣——简单方法

    学爬虫有一段时间了,前面没有总结又重装了系统,导致之前的代码和思考都没了..所以还是要及时整理总结备份.下面记录我模拟登陆豆瓣的方法,方法一登上了豆瓣,方法二重定向到了豆瓣中“我的喜欢”列表,获取了第 ...

  7. Http请求超时的一种处理方法

    URLConnection类常见的超时处理就是调用其setConnectTimeout和setReadTimeout方法: setConnectTimeout:设置连接主机超时(单位:毫秒) setR ...

  8. 需求分析之WBS

    我们的产品就是当你把废旧的塑料瓶和电池投入回收箱中会产生能量,那么这能量可以干嘛呢那就通过我们的APP进行扫码记录所产生的能量这写能量可以在我们的APP的换吧中进行兑换用户所需要的东西比如:共享单车的 ...

  9. ASP.NET错误处理的方式(一)

    对Web应用程序来说,发生不可预知的错误和异常在所难免,我们必须为Web程序提供错误处理机制.当错误发生时,我们必须做好两件事情:一是将错误信息记录日志,发邮件通知网站维护人员,方便技术人员对错误进行 ...

  10. 字典构造、合并(dict)、排序

    使用dict,zip方法将两个list合并为dict keys = ["b", "a", "c", "e", " ...