博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动化测试2--unittest
阅读量:2070 次
发布时间:2019-04-29

本文共 4090 字,大约阅读时间需要 13 分钟。

一.unittest的简单使用

1.test fixture:代表了执行用例前的准备工作和用例执行后的清理工作

2.test case:测试用例,是测试的最小单位,一般检查一组输入的相应是否符合预期,用TestCase来帮助实现
3.test suite:经常被翻译成‘测试套件’,是测试用例或者测试套件的集合,一般用来把需要一起执行的用例组合到一起;
4.test runner:用来执行测试用例并输出测试结果的组件。可以是图形界面或者命令行界面

运行流程:

  • 每执行1个test之前,先执行setUp方法;执行1个test之后,执行tearDwon方法
  • unittest.main()运行时,框架自动寻找TestCase子类,并且运行
  • 在Testcase子类中,只把以test开头的方法当做测试用例,进行执行

代码:

import unittestclass Test1(uinttest.TestCase):	def setUp(self):		print('hello')	def tearDwon(self):		print('by')	def test_001(self):		print('001')	def test_002(self):		print('002')	def test_003(self):		print('003')if _name_ == '_main_':	unittest.main()

二.生成测试报告的执行步骤

1.创建套件

2.定义测试列表
3.向测试套件中添加测试用例
4.行测试用例,verbosity=2为每一个测试用例输出报告,run的参数是套件

代码:

import unittestclass Test1(uinttest.TestCase):	def setUp(self):		print('hello')	def tearDwon(self):		print('by')	def test_001(self):		print('001')	def test_002(self):		print('002')	def test_003(self):		print('003')if _name_ == '_main_':	# 套件的执行方法	# 创建套件	suit = unittest.TestSuit()	#定义一个测试列表	case_list = ['test_001', 'test_002', 'test_003']	for case in case_list:		suit.addTest(Test1(case))	# 向测试套件中添加测试用例	suit.addTest(Test1)	# 运行测试用例,verbosity=2为每一个测试用例输出报告,run的参数是套件	uinttest.TextTestRunner(verbosity=2).run(suit)

三.unittest断言

1.断言是测试的核心,我们使用assertEqual()来判断预期结果,用assertTrue()和assertFalse来做是非判断。

  • assertEqual(value1, value2)# value1为预期值,value2为结果值

2.unittest支持命令行接口,我们可以在命令行指定运行具体的测试用例。

  • python -m unittest test.Test1

代码:

import unittestclass Test(uinttest.TestCase):	def setUp(self):		print('start')	def tearDwon(self):		print('end')	# 判断预期值和实际值是否相等	def test_001(self):		self.assertEqual('1', '1')		print('001')	def test_002(self):		self.assertEqual('1', '2')		print('002')	def test_003(self):		print('003')if _name_ == '_main_':	unittest.main()

四.登录模块

from 自动化测试1 imoprt Commonclass Login(Common):	def login(self, user, pwd):		#跳转到号店		self.open_url('http://www.yhd.com')		#定位到登录按钮进行点击,点击之后进入一号店登录界面		self.click('class', 'hd_login_link')		#定位并输入账号密码		self.input_data('id','un', user)		self.input_data('id', 'pwd', pwd)		#点击登录		self.click('class', 'hd_login_link')if _name_ == '_main_':	log = Login()	log.login('hack_ai_buster', 'lajfadjf')

五.测试用例

import unittestfrom 登录模块.Login import Loginclass Testcase(unittest.TestCase):	def setUp(self):		print('start')	def tearDown(self):		print('end')	# 登录成功的情况	def test_001(self):		log = Login()		# 正确账号密码登录		log.login('hack_ai_buster', 'lajfadjf')		# 获取登录后的用户名		data = log.get_text('class', 'hd_login_name')		# 进行断言判断		self.assertEqual('hack_ai_buster', data)		# 验证账号密码都不输入直接点击的测试用例	def test_002(self):		log = Login()		# 正确账号密码登录		log.login('', '')		# 获取登录后的用户名		data = log.get_text('id', 'error_tips')		# 进行断言判断		self.assertEqual('请输入账号和密码', data)		# 不输入密码直接点击的测试用例	def test_003(self):		log = Login()		# 正确账号密码登录		log.login('dfawfa', '')		# 获取登录后的用户名		data = log.get_text('id', 'error_tips')		# 进行断言判断		self.assertEqual('请输入密码', data)		def test_004(self):		log = Login()		# 正确账号密码登录		log.login('dfawfa', '')		# 获取登录后的用户名		data = log.get_text('id', 'error_tips')		# 进行断言判断		self.assertEqual('请输入密码itcast', data)	if _name_ == '_main_':	unittest.main()

六.测试套件运行测试用例

import unittestfrom 测试用例 import Testcaseclass Test(unittest.TestCase):	def test_suit(self):		# 创建测试套件		mysuit = unittest.TestSuit()		# 向测试套件中添加测试用例		case_list = ['test_001', 'test_002', 'test_oo3', 'test_004']		for case in case_list:			mysite.addTest(Testcase(case))		# 使用runner运行测试用例		unittest.TextTestRunner(verbosity=2).run(mysuit)if _name_ == '_main_':	unittest.main()

七.生成html的测试报告

import unittestfrom 测试用例 import Testcaseimport HTMLTestRunnerclass Test(unittest.TestCase):	def test_suit(self):		# 创建测试套件		mysuit = unittest.TestSuit()		# 向测试套件中添加测试用例		case_list = ['test_001', 'test_002', 'test_oo3', 'test_004']		for case in case_list:			mysite.addTest(Testcase(case))		# 使用runner运行测试用例		# unittest.TextTestRunner(verbosity=2).run(mysuit)		#生成html格式的测试报告文件		with open('路径/report.html', 'wb') as f:			HTMLTestRunner(			stream = f,  # 设定数据写入哪个文件			title = '第一个测试报告',  # 标题			description = 'itcast软件测试', #描述			verbosity = 2			).run(mysuit)if _name_ == '_main_':	unittest.main()

转载地址:http://rwjmf.baihongyu.com/

你可能感兴趣的文章
Java集合详解8:Java集合类细节精讲,细节决定成败
查看>>
Java并发指南2:深入理解Java内存模型JMM
查看>>
Java并发指南5:JMM中的final关键字解析
查看>>
Java并发指南6:Java内存模型JMM总结
查看>>
Java并发指南7:JUC的核心类AQS详解
查看>>
Java并发指南8:AQS中的公平锁与非公平锁,Condtion
查看>>
Java网络编程和NIO详解6:Linux epoll实现原理详解
查看>>
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
查看>>
Java网络编程与NIO详解8:浅析mmap和Direct Buffer
查看>>
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>