自动化测试2--unittest

一.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 unittest

class 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 unittest

class 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 unittest

class 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 Common

class 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 unittest
from 登录模块.Login import Login

class 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 unittest
from 测试用例 import Testcase

class 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 unittest
from 测试用例 import Testcase
import HTMLTestRunner

class 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()

你可能感兴趣的:(软件测试,软件测试,unittest,python)