Python单元测试框架:unittest(二)
一、直接使用TestCase
注意所有测试方法都需要以test开头。代码如下:
import unittest class Test1(unittest.TestCase):
@classmethod
def setUpClass(self):
print("execute setUpClass") @classmethod
def tearDownClass(self):
print("execute tearDownClass") def setUp(self):
print("execute setUp") def tearDown(self):
print("execute tearDown") def test_one(self):
print('execute test_one')
self.assertTrue('FOO'.isupper()) def test_two(self):
print('execute test_two') if __name__ == '__main__':
unittest.main()
执行如下:
二、使用TestSuite
直接写TestCase执行时是按字母排序的顺序执行的,如果要设定测试用例的执行先后顺序则需要将TestCase封装到TestSuite。代码如下:
import unittest class Test2(unittest.TestCase):
@classmethod
def setUpClass(self):
print("execute setUpClass") @classmethod
def tearDownClass(self):
print("execute tearDownClass") def setUp(self):
print("execute setUp") def tearDown(self):
print("execute tearDown") def test_one(self):
print('execute test_one')
self.assertTrue('FOO'.isupper()) def test_two(self):
print('execute test_two') if __name__ == '__main__':
suite = unittest.TestSuite()
# Test2是要测试的类名,test_two是要执行的测试方法
suite.addTest(Test2("test_two"))
suite.addTest(Test2("test_one"))
runner = unittest.TextTestRunner()
runner.run(suite)
执行如下,可以看到先添加的test_two先执行:
三、使用HTMLTestRunner
我们可能还会希望生成一个简单的HTML报告,可使用HTMLTestRunner实现。但pypi和官网上最新的都是只支持python2.x的0.8.2版本。可将以下代码自行保存成HTMLTestRunner.py放到自己项目目录下
代码如下:
import unittest
import HTMLTestRunner class Test3(unittest.TestCase):
@classmethod
def setUpClass(self):
print("execute setUpClass") @classmethod
def tearDownClass(self):
print("execute tearDownClass") def setUp(self):
print("execute setUp") def tearDown(self):
print("execute tearDown") def test_one(self):
print('execute test_one')
self.assertTrue('FOO'.isupper()) def test_two(self):
print('execute test_two') if __name__ == '__main__':
suite = unittest.TestSuite()
# Test3是要测试的类名,test_one是要执行的测试方法
suite.addTest(Test3("test_one"))
suite.addTest(Test3("test_two"))
# 实践中发现执行时的当前路径,不一定是此文件所在的文件夹,所以使用绝对路径
# print(f"{os.getcwd()}")
filename = 'F:\\PycharmProjects\\test3\\apptestresult.html'
fb = open(filename, 'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=fb, title="测试HTMLTestRunner", description="测试HTMLTestRunner")
runner.run(suite)
fb.close()
执行如下:
报告如下:
四、HTMLTestRunner未生成报告问题处理
4.1 pytest干扰
如果python环境中安装了pytest,那么默认运行时会是Run 'py.test for'(如下图所示),这时if __name__ == "__main__"下的语句是不被执行的所以报告肯定不会生成(原理未知)。
些时需要依次点开pycharm菜单----Run----Edit Configurations...自行添加一个运行配置,如下图
4.2 路径问题
一是注意自己把报告输出到了哪个位置,特别是如果有几个地方都会输出报告时不要弄混了,搞得自己在浏览器中刷新半天没看到有变化,认为没生成报告。
二是实践中通过os.getcwd()发现python运行时的目录不一定是当前目录,所以如果报告使用相对路径然后又没看到有报告生成,那就注意看os.getcwd()返回的运行路径是不是当前文件夹。
Python单元测试框架:unittest(二)的更多相关文章
- Python单元测试框架unittest使用方法讲解
这篇文章主要介绍了Python单元测试框架unittest使用方法讲解,本文讲解了unittest概述.命令行接口.测试案例自动搜索.创建测试代码.构建测试套件方法等内容,需要的朋友可以参考下 概 ...
- Python单元测试框架unittest之深入学习
前言 前几篇文章该要地介绍了python单元测试框架unittest的使用,本篇文章系统介绍unittest框架. 一.unittest核心工作原理 unittest中最核心的四个概念是:test c ...
- Python单元测试框架unittest之单用例管理(一)
一.概述 本文介绍python的单元测试框架unittest,unittest原名为PyUnit,是由java的JUnit衍生而来,这是Python自带的标准模块unittest.unittest是基 ...
- Python单元测试框架unittest
学习接口自动化测试时接触了unittest单元测试框架,学习时参照了虫师编写的<selenium2自动化测试实战>,个人觉得里面讲的例子还比较容易理解的. 一.基础 1.main()和框架 ...
- Python单元测试框架unittest重要属性 与 用例编写思路
前言 本文为转载,原文地址作者列举python unittest这个测试框架的主要属性和 测试用例思路 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行, ...
- python单元测试框架-unittest(一)
简介 unittest单元测试框架不仅可以适用于单元测试,还可以使用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. ...
- Python单元测试框架unittest之单用例管理(二)
概述 利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块,上篇文章就是使用的这种方式: 一种是添加到testsuite集合中再加载 ...
- python单元测试框架-unittest(二)之断言
断言内容是自动化脚本的重要内容,正确设置断言以后才能帮助我们判断测试用例执行结果. 断言方法 assertEqual(a, b) 判断a==b assertNotEqual(a, b) 判断a!=b ...
- Python单元测试框架——unittest
测试的常用规则 一个测试单元必须关注一个很小的功能函数,证明它是正确的: 每个测试单元必须是完全独立的,必须能单独运行.这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作.通常通过se ...
- Python单元测试框架 unittest详解
一 整体结构概览 unittest原名为PyUnit,是由java的JUnit衍生而来.对于单元测试,需要设置预先条件,对比预期结果和实际结果. TestCase :通过继承TestCase类,我们可 ...
随机推荐
- JWT验证机制【Python版Flask或自己写的后端可以用】【刘新宇】
JWT Json Web Token(JWT) JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在两个组织之间传递安全可靠的信息. 官方定义:JSON Web T ...
- SeleniumHQ
下载地址:http://www.seleniumhq.org/download/
- 2019-2020-1 20199328《Linux内核原理与分析》第三周作业
加载内核 这里可以看出有些东西隔一段时间就会打印出来 查看mymain.c 开头的一些语句不再描述 每10000次循环打印一次 这里还是针对的mymain.c文件,这里我们可以根据自己的计算机对频率进 ...
- Redis持久化存储(一)
Redis介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化 ...
- vue项目中使用bpmn-为节点添加颜色
内容概述 本系列 “vue项目中使用bpmn-xxxx” 分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意 ...
- Memo-Tech
Qt install Qt on Ubuntu Download *.run file; Click downloaded file to install. Note that gcc module ...
- 12.Python提供了哪些内建类型
There are mutable and Immutable types of Pythons built in types Mutable built-in types: List Set Dic ...
- nginx开启ssl并把http重定向到https的两种方式
1 简介 Nginx是一个非常强大和流行的高性能Web服务器.本文讲解Nginx如何整合https并将http重定向到https. https相关文章如下: (1)Springboot整合https原 ...
- ipc$链接批量爆破
写了一个bat bat code: @echo off cls echo Useage: % ip.txt pass.txt ) do ( FOR /F ) do ( echo net use \\% ...
- 【Java基础总结】Java基础语法篇(上)
Java基础语法 思维导图 一.Java语言介绍 1.Java应用平台 JavaSE(Java Platform Standard Edition):开发普通桌面和商务应用程序,是另外两类的基础 Ja ...