如果要自测代码,可使用单元测试,需要导入unittest模块,import unittest即可。

例如,自测一个计算连个数相除的函数,代码如下:

import unittest
def calc(a,b):
return round(a/b,) #返回a除以b的结果,保留1位小数
class TestCacl(unittest.TestCase):
def test1(self): #测试用例要以test开头,不然不会被执行
res = calc(,)
self.assertEqual(0.5,res,'计算不正确') #判断实际结果是不是等于预期结果
def test2(self):
res = calc(,)
self.assertIsNone(res,'原因,写不写都可以') #判断返回值是不是None,如果是None就通过了
unittest.main() #会运行当前python文件里面的所有测试用例

在测试完成后,需要获取测试结果,那么此时就需要产生测试报告,下面介绍两种产生测试报告的模块,一个是HTMLTestRunner,另一个是BeautifulReport。

第一种HTMLTestRunner需要打开文件,而且生成的报告相对于BeautifulReport模块产生报告来说,没那么美观,所以,在工作中一般使用好看的报告模块。

import unittest
import HTMLTestRunner
from BeautifulReport import BeautifulReport as bf class TestCalc(unittest.TestCase):
def setUp(self): #每条用例运行之前自动运行
print('我是setUp,是啥时候运行的')
def tearDown(self): #每个用例运行之后自动运行的,不需要去调用
print('tearDown是啥时候运行的')
@classmethod #类方法
def setUpClass(self): #所有用例运行之前运行的
print('setUpClass是啥时候运行的')
@classmethod
def tearDownClass(self): #所有用例运行完成之后运行的
print('tearDownClass是啥时候运行的')
def testh(self):
'''用例注释'''
print('testh')
self.assertEqual(,) def testb(self): #用例的运行顺序是按照测试用例名称的字母顺序来运行的
'''用例注释'''
print('testb')
self.assertEqual(,)
def testa(self):
print('testa')
self.assertEqual(,)
def testc(self):
print('testc')
self.assertEqual(,) #测试套件(用例集),也就是存放测试用例的
#、先把所有的测试用例都放到用例集里面
#、运行这些测试用例
#、产生报告
suite = unittest.TestSuite() #测试集合
suite.addTest( unittest.makeSuite(TestCalc)) #把刚才写的用例加进来
f = open('test.html','wb')
runner = HTMLTestRunner.HTMLTestRunner(f,title = '双鱼座用例标题',description='这是用例描述')
runner.run(suite) #运行用例

下面介绍好看的测试报告怎么产生的吧。。。。

import unittest
import HTMLTestRunner
from BeautifulReport import BeautifulReport as bf class TestCalc(unittest.TestCase):
def testb(self):
'''用例注释'''
print('testb')
self.assertEqual(,)
def testa(self):
print('testa')
self.assertEqual(,)
def testc(self):
print('testc')
self.assertEqual(,)
suite = unittest.TestSuite() #测试集合
suite.addTest( unittest.makeSuite(TestCalc)) #把刚才写的用例加进来
run = bf(suite)
run.report(filename='test',description='这是描述信息,必须写')
#log_path是默认在当前目录下,可以不写,如果要生成在指定目录下就可以写上路径

unittest框架(二)单元测试及测试报告的更多相关文章

  1. Python3 完美解决unittest框架下不生成测试报告

    前提: 1.运行测试用例一切正常,只是没有测试报告显示 2.使用命令行pyhon 脚本名字.py 却可以生成测试报告 3.pycharm 在运行测试用例的时候 默认是以unittest 框架来运行的, ...

  2. 【python接口自动化】初识unittest框架

    本文将介绍单元测试的基础版及使用unittest框架的单元测试. 完成以下需求的代码编写,并实现单元测试 账号正确,密码正确,返回{"msg":"账号密码正确,登录成功& ...

  3. selenium自动化测试、Python单元测试unittest框架以及测试报告和日志输出

    部分内容来自:https://www.cnblogs.com/klb561/p/8858122.html 一.基础介绍 核心概念:test case, testsuite, TestLoder,Tex ...

  4. Selenium(十六):unittest单元测试框架(二) 初识unittest(续)

    1. 认识unittest(续) 关于unittest单元测试框架,还有一些问题值得进一步探讨.你可能在前一章的学习过程中产生了一些疑问,也许你会在本节中找到答案. 1.1 用例执行的顺序 用例的执行 ...

  5. Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins

    本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存 ...

  6. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

  7. unittest单元测试框架之unittest 框架的总结2(八)

    unittest 下的属性 1.Unittest.TestCase:所有测试用例类继承的基本类 2.Unittest.main():将一个单元测试模块变为可直接运行的测试脚本 If __name__ ...

  8. unittest单元测试框架之unittest 框架的总结(七)

    1. Unittest 是 python 自带的单元测试框架,可以用其作为自动化框架来组织测试用例(测 试用例的执行顺序)的执行. 2. Unittest 框架的流程: 写好 TestCase 通过 ...

  9. unittest(二)框架中的概念与断言

    test case一个 TestCase 的实例就是一个测试用例.什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),实现测试过程的代码(run),以及测试后环境的还原( ...

  10. python之单元测试及unittest框架的使用

    例题取用登录模块:代码如下 def login_check(username,password): ''' 登录校验的函数 :param username:账号 :param password: 密码 ...

随机推荐

  1. Android获取屏幕高度、标题高度、状态栏高度详解

    Android获取屏幕高度的方法主要由view提供 通过View提供的方法获取高度方式有两种: 1, 当前显示的view中直接获取当前view高宽2,通过Activity的getWindow().fi ...

  2. android 近百个源码项目

    http://www.cnblogs.com/helloandroid/articles/2385358.html

  3. Buff系统

    BUFF状态可以通过游戏道具.使用技能.被攻击技能.NPC.宠物等等实现.BUFF状态,有很多技能在释放后,会对目标产生一定时间的额外影响,这些影响有的是增益的,有的是减免的.比如法师的“熔岩地”,会 ...

  4. JavaScript实现禁用键盘和鼠标的点击事件

    编写自己定义的JavaScript函数maskingKeyboard()和rightKey(); maskingKeyboard():禁用键盘 rightKey():禁用鼠标右键 <script ...

  5. LeetCode——Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary t ...

  6. php-fpm打开错误日志的配置

    nginx与apache不一样,在apache中可以直接指定php的错误日志,那样在php执行中的错误信息就直接输入到php的错误日志中,可以方便查询. 在nginx中事情就变成了这样:nginx只对 ...

  7. N32903系列的基础知识(1)

    N32903U1DN使用ARM926EJ-S内核,其内部集成的JPEG编解码器.CMOS摄像头接口.32通道的声音处理单元(SPU).ADC.DAC等不仅可以满足各种的应用需求,还能减少生产方面的物料 ...

  8. 关于“ORA-01747: user.table.column, table.column 或列说明无效”的报错。

    今天在工程中遇到“ORA-01747: user.table.column, table.column 或列说明无效”的报错情况,查了一下是由于数据库列名起的不好引起的,名字用到了数据库的关键字.

  9. String.Join重载String.Join 方法 (String, String[], Int32, Int32)

    https://msdn.microsoft.com/zh-cn/library/tk0xe5h0 String.Join 方法 (String, String[], Int32, Int32) 官方 ...

  10. poj_1988 并查集

    题目大意 开始有N堆砖块,编号为1,2....N,每堆都只有一个.之后可以进行两种操作: (1)M X Y 将编号为X的砖块所在的那堆砖拿起来放到编号为Y的砖块所在的堆上: (2)C X 查询编号为X ...