TestCase:

一段Testcase代码示例:

# -*- coding: utf-8 -*-
'''
Created on 2019-6-27 @author: adminstrator
'''
import unittest class UnitTestDemo1(unittest.TestCase): def setUp(self):
print('Run before test') def tearDown(self):
print('Run after test') def testCase(self):
print('test case....') if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()

断言:

# -*- coding: utf-8 -*-
'''
Created on 2019-6-27 @author: adminstrator
'''
import unittest class AssertTestCase(unittest.TestCase):
'''
断言演示
''' def setUp(self):
print('Run befor testcase') def tearDown(self):
print('Run after testcase') def testAssert(self):
num1=12
num2=10 self.assertEqual(num1, num2, '两个数不相等') #最后一个参数msg是当测试用例不通过时输出的内容,当断言不通过时,不会继续执行下面的内容
self.assertNotEqual(num1, num2, '两个数相等') #self.调用类的私有方法或私有变量 if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()

TestSuite:

# -*- coding: utf-8 -*-
'''
Created on 2019-6-28 @author: adminstrator
'''
import unittest class UserCase(unittest.TestCase): def testAddUser(self):
print('add a user') def testDelUser(self):
print('delete a user') if __name__ == "__main__": #下面是3种将TestCase加到TestSuite中的方法 suite1=unittest.TestSuite(map(UserCase,['testAddUser','testDelUser'])) suite2=unittest.TestSuite()
suite2.addTests(map(UserCase,['testAddUser','testDelUser'])) suite3=unittest.TestSuite()
suite3.addTest(UserCase('testAddUser'))
suite3.addTest(UserCase('testDelUser')) trunner=unittest.TextTestRunner() #通过TextTestRunner执行TestSuite
trunner.run(suite1)

TextTestRunner:

TestCase与TestSuite单独文件的示例:

# -*- coding: utf-8 -*-
'''
Created on 2019-6-28 @author: adminstrator
'''
import unittest class UnitTestDemoShow(unittest.TestCase): def setUp(self):
print('before testcase run') def tearDown(self):
print('after testcase run') def testOne(self):
str1='hello'
str2='hello everyone'
self.assertIn(str1, str2, '判断包含') def testTwo(self):
num1='10'
num2='10'
self.assertEqual(num1, num2, '判断相等') if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()
# -*- coding: utf-8 -*-
'''
Created on 2019-6-28 @author: adminstrator
'''
import unittest
from UnitTestDemoShow import UnitTestDemoShow class TestSuiteFile(unittest.TestCase): def RunTestSuite(self):
testsuite=unittest.TestSuite()
testsuite.addTest(UnitTestDemoShow('testOne'))
testsuite.addTest(UnitTestDemoShow('testTwo')) runner=unittest.TextTestRunner()
runner.run(testsuite) if __name__ == "__main__": t=TestSuiteFile()
t.RunTestSuite()

HTMLTestRunner下载地址:

http://tungwaiyip.info/software/HTMLTestRunner.html

下载后存放在\python\Lib\site-packages下

验证是否导入成功:

python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决

1.原因是官网的是python2语法写的,看官手动把官网的HTMLTestRunner.py改成python3的语法:

2.修改汇总:

第94行,将import StringIO修改成import io

第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,将uo = o.decode('latin-1')修改成uo = e

第772行,将ue = e.decode('latin-1')修改成ue = e

第631行,将print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

生成测试报告(TestCase还是使用之前的):

# -*- coding: utf-8 -*-
'''
Created on 2019-6-28 @author: adminstrator
'''
import unittest
from UnitTestDemoShow import UnitTestDemoShow
import time,os
import HTMLTestRunner class HTMLReportDemo(unittest.TestCase): def RunTestSuite(self):
testsuite=unittest.TestSuite()
testsuite.addTest(UnitTestDemoShow('testOne'))
testsuite.addTest(UnitTestDemoShow('testTwo')) #利用HTMLTestRunner生成测试报告
reportfile="./reports/"+str(int(round(time.time()*1000)))
os.mkdir(reportfile)
filename=reportfile+"report.html"
fp=open(filename,'wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'HTMLTestRunner测试报告',description=u'这是一个HTMLTestRunner测试报告')
result=runner.run(testsuite) if __name__ == "__main__": t=HTMLReportDemo()
t.RunTestSuite()

App自动化-python-Unittest框架的更多相关文章

  1. 接口自动化-python unittest+requests+HTMLrunner

    从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...

  2. python+unittest框架第一天unittest之简单认识Test Fixure:测试固件【8月17更新】

    20万的慢慢会实现的吧,hhh unittest框架,我就不在介绍了,百度有很详细的介绍. 我们只要了解: 1.unittest是单元测试框架 2.它提供用例组织与执行:在实际工作中案例可能有上百条, ...

  3. python unittest框架装饰器

    要说单元测试和UI自动化之间的是什么样的一个关系,说说我个人的一些心得体会吧,我并没有太多的这方面经验,由于工作本身就用的少,还有就是功能测试点点对于我这种比较懒惰的人来说,比单元测试复杂...思考单 ...

  4. python+unittest框架整理(一点点学习前辈们的封装思路,一点点成长。。。)

    预期框架整理目标: 1.单个用例维护在单个.py文件中可单个执行,也可批量生成组件批量执行 2.对定位参数,定位方法,业务功能脚本,用例脚本,用例批量执行脚本,常用常量进行分层独立,各自维护在单独的. ...

  5. python unittest框架理解与总结(二)

    unittest基本原理: ♦整个平台的搭建使用的是python的unittest测试框架,这里简单介绍下unittest模块的简单应用. ♦unittest是python的标准测试库,相比于其他测试 ...

  6. python+unittest框架第六天unittest之优化测试报告

    今天的内容主要是,用第三方的HTMLRUNner 第三方的报告来优化之前第五天批量执行案例的测试报告.案例的部分看第五天的批量执行笔记~ HTMLRUNner他可以生成更美观的测试报告,基于前辈造的车 ...

  7. python unittest框架中addCleanup函数详解

    接上一篇doCleanups说明,这次介绍下另一个很好用的函数:addCleanup 还是老规矩,看官方文档说明: addCleanup(function, *args, **kwargs)¶ Add ...

  8. python unittest 框架添加测试用例及运行

    找出要测试的testcase,并加入到Testsuite,运行Testsuite并把结果给TestResult1.创建TestSuite实例对象suite = unittest.TestSuite() ...

  9. python unittest框架

    四个部分: test fixture A test fixture represents(代表) the preparation needed to perform one or more tests ...

  10. python unittest框架中doCleanups妙用

    偶看unittest官方文档中,发现一个很好用的功能函数doCleanups,看看官方是怎么解释的: doCleanups() This method is called unconditionall ...

随机推荐

  1. IDEA操作之test case coverage的方法

    作用:  用于自动化测试,检查单元测试的覆盖率情况. 安装: 1.点击 Run * with coverage 或者右键已经定义为test source的package选择(单个test class同 ...

  2. nginx文件服务器搭建

    一.安装 (CentOS 7) yum install nginx -y 如果报错: [u3@L3 /]$ sudo yum install nginx -y Loaded plugins: fast ...

  3. 2.1spring cloud 环境配置

    前提:SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖的关系. 所以基本是搭建SpringBoot + 组件 = Sp ...

  4. linux 从远程服务器拷贝文件

    1.从服务器复制文件到本地: scp root@192.168.1.100:/data/test.txt /home/myfile/ 2.从服务器复制文件夹到本地: scp -r root@192.1 ...

  5. python3启航

    Python3的基本数据类型 数字 int ,所有功能都放在int里 a1 = 123 a2 = 456 ##int 将字符串转换为数字 a = "123" print(tyep( ...

  6. 我的第一个python web开发框架(2)——第一个Hello World

    小白中午听完老菜讲的那些话后一直在思考,可想来想去还是一头雾水,晕晕呼呼的一知半解,到最后还是想不明白,心想:老大讲的太高深了,只能听懂一半半,看来只能先记下来,将明白的先做,不明白的等以后遇到再学. ...

  7. docker 入门2 - 容器 【翻译】

    入门,第 2 部分:容器 先决条件 安装的 Docker 版本是 1.13 及以上. 读完 第一部分 用下面的命令快速测试你的环境是否完备: docker run hello-world 概述 现在开 ...

  8. 怎样实现跨域AJAX请求发送Cookie

    第一步: 服务器必须在Response Header中设置: Access-Control-Allow-Credentials: true 第二步: 客户端发起请求时需要将 xhr.withCrede ...

  9. codeforce B. Petya and Exam

    wa一万次难受. #include<cstdio> #include<cstring> #include<cmath> #include<algorithm& ...

  10. MySQL下载安装图文

    一. MySQL下载 1. 进入MySQL官网官网地址:https://www.mysql.com/ 2. 点击DOWNLOADS 3. 点击Community(GPL) Downloads 4. 找 ...