第二个月课堂012讲解 _ Unittest框架(上)_高级讲师肖sir



import unittest # 导入unittest框架
# 单元测试框架=unittest
class A:
class C(object):
class D(unittest.TestCase):
#定义一个类来继承unittest框架中的TestCase类
'''熟悉框架中的语法和格式要求'''
def fun(self): #在类中定义了一个实例方法
pass #占位符
@classmethod
def setUpClass(cls): #cls=class类的方法
print('类的开始')
@classmethod
def tearDownClass(cls):
print('类的结束')
'''类的开始和类的结束在框架中不管有多少条用例都只执行一次'''
def setUp(self): #self实例方法
print('方法的开始')
def tearDown(self):
print('方法的结束')
'''在框架中方法,有多少条用例就执行多少次'''
def test03(self):
print('这是第三条用例')
'''
在用例中:执行的规则要求 阿拉伯数字 0-9.。。从小到大执行
纯英文小写:a-z
纯英文大写:A-Z'''
def test01(self):
print('这是第一条用例')
'''
在框架中用例的命名规则必须要:test开头的,如不是test开头
则不会被运行切记'''
def test02(self):
print('这是第二条用例')
if __name__ == '__main__':
'''在类中如要调用类中的方法:创建一个对象,用对象调用方法'''
unittest.main()
'''main函数它是一个执行函数(执行框架中的用例的)'''

#
# import unittest # 导入单元测试框架--开发同事经常使用的框架
# from selenium import webdriver
# import time
# class D(unittest.TestCase): #定义一个类引用框架中的TestCase类
# @classmethod
# def setUpClass(cls): #cls=class 类
# print('方法的开始')
# @classmethod
# def tearDownClass(cls):
# print('方法的结束')
# def setUp(self): #self实例方法 开始
# self.driver=webdriver.Chrome()
# self.driver.get('http://www.baidu.com')
# self.driver.maximize_window()
# self.driver.implicitly_wait(10)#隐式等待
# def test01(self): #test用例1
# self.driver.find_element_by_id('kw').send_keys('多测师')
# time.sleep(2)
# self.driver.find_element_by_id('su').click() #点击百度一下
# def test02(self):#用例2
# self.driver.find_element_by_id('kw').send_keys('你好呀')
# time.sleep(2)
# self.driver.find_element_by_id('su').click()
# def tearDown(self): #方法的结束
# time.sleep(4) #等待4秒中
# self.driver.close() #关闭窗口释放资源
# '''自动帮你关闭当前窗口'''
# if __name__ == '__main__':
# unittest.main()
# # '''main函数在框架中的作用是执行所有的用例(限制当前的类中)'''


# import unittest #导入单元测试框架
# from selenium import webdriver
# from time import sleep
# class A(unittest.TestCase):#通过类来继承单元测试框架中的TestCase类
# '''此框架测试人员主要用来做自动化封装'''
# def setUp(self): #测试环境的地址
# self.driver=webdriver.Chrome() #窗口一个浏览器对象
# self.driver.get('http://www.baidu.com')
# self.driver.maximize_window()#窗口最大化
# self.driver.implicitly_wait(10)#隐式等待
# def test01(self): #用例1
# self.driver.find_element_by_id('kw').send_keys('多测师')
# sleep(2)
# self.driver.find_element_by_id('su').click()#点击百度一下
# def test02(self): #用例2
# self.driver.find_element_by_id('kw').send_keys('你好呀')
# sleep(2)
# self.driver.find_element_by_id('su').click()#点击百度一下
# def test03(self):#用例3
# self.driver.find_element_by_link_text('hao123').click()#点击链接
# def tearDown(self):
# sleep(3)
# self.driver.close()#关闭当前窗口释放资源
# # 选择性执行test 用例:通过创建一个容器,把所有的用例放到容器中然后在选择
# # 可以单选也可以多选
# def run(): #定义一个普通函数里面封装的就是容器用来存放我们的测试用例的
# suit=unittest.TestSuite() #创建一个容器对象(unittest来调用的),
# # 后面一定要加一个小括号
# # suit.addTest(A('test01')) #单项选择用例
# suit.addTests([A('test02'),A('test03')]) #多项选择用例
# return suit
# if __name__ == '__main__':
# # unittest.main() #执行函数且执行当前框架中的所有用例test
# ru_n=unittest.TextTestRunner()#运行
# ru_n.run(run())


# import unittest #导入单元测试框架
# class A(unittest.TestCase): #定义一个类继承框架中的TestCase类
# @classmethod
# def setUpClass(cls):#cls类
# print('类的开始')
# @classmethod
# def tearDownClass(cls):
# print('类的结束')
# '''类的开始和结束在语法中不是固定语法,可要可不要'''
# def setUp(self):
# print('方法的开始')
# def tearDown(self):
# print('方法的结束')
# '''方法的开始和结束也不是固定语法,需要则写否者可不写'''
# def test01(self):
# print('这是一条用例')
# '''在框架中用例的定义是:test 一定要符合test语法否者不会执行
# 运行规则:数字0-9.。从小到大执行
# 英文a-z A-Z 从小到大执行
# '''
# if __name__ == '__main__':
# unittest.main()
# '''main函数是框架中的执行函数,执行所有的用例一次性'''

import unittest # 导入单元测试框架
# from selenium import webdriver
# import time
# #from less.HTMLTestRunner3 import HTMLTestRunner # 生成测试报告
#
#
# class A(unittest.TestCase): # 定义一个类继承框架中的TestCase类
# def setUp(self):
# self.drvier = webdriver.Chrome()
# self.drvier.get('http://www.baidu.com')
# self.drvier.maximize_window()
# self.drvier.implicitly_wait(10)
#
# def test01(self):
# self.drvier.find_element_by_id('kw').send_keys('多测师')
# self.drvier.find_element_by_id('su').click()

# def test02(self):
# self.drvier.find_element_by_id('kw').send_keys('你好呀')
# self.drvier.find_element_by_id('su').click()
# def test03(self):
# self.drvier.find_element_by_id('kw').send_keys('多测师52班')
# self.drvier.find_element_by_id('su').click()
# def tearDown(self):
# time.sleep(4) # 线程等待
# self.drvier.close() # 关闭当前窗口释放资源
#
#
# def fun():
# suit = unittest.TestSuite() # 创建一个容器
# # suit.addTests([A('test01'),A('test02'),A('test03')])
# suit.addTest(A('test01')) # 单个
# return suit
#
#
# if __name__ == '__main__':
# run = unittest.TextTestRunner()
# run.run(fun())

# 定义一个路径:文件放置那个地方名称叫什么
# path='E:\pycharm\duoceshi_52\less/'
# tim_e=time.strftime('%Y-%m-%d-%H-%M-%S')
# repot_path=path+tim_e+'-rpot.html'
# # E:\pycharm\duoceshi_52\less /2020-09-15-15-07-59 - rpot.html
# f =open(repot_path,'wb')#将内容已二进制格式写入到空文件中
# runner=HTMLTestRunner(stream=f,title='百度测试用例',description='用例执行情况如下')
# runner.run(fun())
'''
把今天讲的内容进行调试:
调试完成后知道和熟悉它们执行的原理,
完成一个作用:
根据论坛:写5条用例且生成测试报告完成后截图发群里'''
#
# from less.HTMLTestRunner3 import HTMLTestRunner # 生成报告的文件
# import unittest # 自动收搜需要引用单元框架中的方法
# import time # 拼接时间用例保证执行的时候报告文件它可以不一样
# import os # 路径模块
#
# # 在此文件中通过自动收搜的方式来收搜
# # less4文件中封装好的用例来执行且生成报告
# cm_path = os.path.abspath(os.path.realpath(os.getcwd()))
# # print(cm_path) #E:\pycharm\duoceshi_52\less
#
# pa = 'E:\pycharm\duoceshi_52' # 项目路径
#
# '''生成当前文件包的一个绝对路径或者目录
# 因为要在此路径来找文件里面的代码执行'''
# '''生成一个时间作用就是让报告的文件名称不重复'''
# tim_e = time.strftime('%Y-%m-%d-%H-%M-%S')
# # print(tim_e) #2020-09-15-15-33-01
# '''当前路径是存放报告包的绝对路径'''
# repot_a = r'E:\pycharm\duoceshi_52\repot_a/'
# '''拼接一个html报告的路径和当前报告文件的名称'''
# reopt_path = repot_a + tim_e + '-repot.html'
#
#
# # print(reopt_path)
# # E:\pycharm\duoceshi_52\repot_a/2020-09-15-16-41-22-repot.html
# def fun1(): # 定义一个函数
# dis_cover = unittest.defaultTestLoader.discover(start_dir=pa, pattern='less4*.py')
# # 通过:discover方法在cm_path路径下模糊匹配less开头且.py结尾的文件中的代码
# f = open(reopt_path, 'wb')
# runner = HTMLTestRunner(stream=f, title='百度用例', description='用例详细如下')
# runner.run(dis_cover) # 通过run来执行当前dis_cover匹配里面的文件中的代码
#
#
# if __name__ == '__main__':
# fun1()
'''
500条用例我只想执行其中的200条,剩余的300条我不执行怎么办?
可以通过dicover 方法来进行选择
返回的是一个列表
通过for循环去遍历你的用例,在通过 if 判断实现选择执行'''


上一篇:定制unittest测试报告【转】


下一篇:测试模块_doctest_unittest