""""""
"""unittest 单元测试框架
他是属于python自带的工作包,直接进行使用就可以
单元测试:单元测试是属于对代码检测的检测环节
还可以适用于测试脚本的编写和执行
unittest 他是由自带的解释器,当然也可以用python的
unittest 单元测试框架里面常用的方法
TestCase:包含着测试用例的全部过程,包含用例的执行顺序,用例的前置条件以及后置条件等等
前置(登陆) ,后置(关闭) 测试case的夹具
TestSuite:用来加载测试用例的类,装case的
TestRunner:执行测试用例的方法类,run 方法执行测试用例
defaultTestLoader:discover :用来查找测试用例。
"""
import unittest
# unittest.TestCase 继承unittest.testcase类
# 所有的用例必须以test进行开头,要不然所写的case不会被执行
# unittest.testcase 类执行case的顺序 :0-9 A-Z a-z 执行顺序
# 是按照ascii表的执行顺序来的
# setup :前置条件 :在每条用例执行之前执行一次
# tearDown:后置条件:在每条用例执行完成之后执行一次
# setupClass:在每个项目运行之前运行一次
# teardownClass:在每个项目运行之后运行一次
# 注意:setUp和tearDown 只有在由case的时候才会运行
# unittest.skip:他是一个装饰器,用来跳过当前的用例,不执行
# class luntanCase(unittest.TestCase):
#
# @classmethod
# def setUpClass(cls):
# print("用例执行之前执行一次")
# print('===================')
# @classmethod
# def tearDownClass(cls):
# print('用例执行完之后执行一次')
# print('====================')
#
# def setUp(self):
# print('用例前置条件')
#
# def tearDown(self):
# print('用例的后置条件')
#
# @unittest.skip # 装饰器,跳过当前用例
# def test01(self):
# print("第一条")
#
# def test02(self):
# print('第二条')
#
# def test03(self):
# print('第三条')
#
# def test04(self):
# print('第四条')
# 执行case
# unittest.main()
# test suite :测试容器,用来管理加载测试用例的
# class LuntanCase(unittest.TestCase):
# def test1(self):
# print("第一条(设置)")
#
# def test2(self):
# print('第二条(设置)')
#
# def test3(self):
# print('第三条(我的)')
#
# def test4(self):
# print('第四条(我的)')
# def test5(self):
# print('第五条(设置)')
#
# # 执行case
#
# if __name__ == '__main__':
# suite_shezhi = unittest.TestSuite()
# suite_wode = unittest.TestSuite()
# 用suite对不同模块case进行分类,设置类 我的类 执行设置
# 一次添加多个值 addTests:
# suite_shezhi.addTests([LuntanCase('test1'),LuntanCase('test2'),LuntanCase('test5')])
# suite_wode.addTests([LuntanCase('test3'),LuntanCase('test4')])
# 一次添加一个值
# suite_shezhi.addTest(LuntanCase('test'))
# suite_shezhi.addTests([LuntanCase('test1'),LuntanCase('test2'),LuntanCase('test5')])
# suite_wode.addTests([LuntanCase('test3'),LuntanCase('test4')])
#
# runner = unittest.TextTestRunner()
#
# runner.run(suite_shezhi)
# runner .run(suite_wode)
""" unittest 单元测试框架断言方法
assert python自带的断言
if语句断言:
unittest
用例成功显示,一条cass显示一个".",
用例执行失败用"E"
用例断言失败"F"
"""
#
# class MyClass(unittest.TestCase):
#
# def test01(self):
# # assertEqual 判断我当前的实际结果与预期结果是否一致
# self.a = "百度一下,你就知道"
#
# self.assertEqual(self.a,"百度一下,你就知道",msg = '断言失败,预期结果与实际不符')
#
# def test02(self):
# # 断言我的实际结果与预期结果不一致
# self.a = "百度一下,你就知道"
# self.assertEqual(self.a,"百度一下,你就知道!",msg = '断言失败,预期结果与实际不符')
#
# def test03(self):
# # 判断我的当前结果是否在实际结果当中,是包含的意思
# self.a = "百度一下,你就知道"
# self.assertNotIn("百度",self.a,msg="断言失败,预期与实际结果不符")
#
# def test04(self):
# # assertNotIn
# self.assertNotIn("淘宝",self.a,msg="断言失败,预期结果与实际结果不符")
#
# def test05(self):
# # assertTrue: 断言我的预期结果是否为True
# self.a = "百度一下,你就知道"
# self.assertTrue(self.a.startswith("百"),msg = "断言失败,预期结果与实际结果不符")
#
# def test06(self):
# # assertTrue: 断言我的预期结果是否为True
# self.a = "百度一下,你就知道"
# self.assertFalse(self.a.startswith("1"),msg = "断言失败,预期结果与实际结果不符")
#
# def test07(self):
# # assertNone:断言我的结果不为None
# self.a = None
# self.assertIsNone(self.a,msg = "断言失败,预期结果与实际结果不符")
#
# def test08(self):
# # assertIsNotNone:断言我的预期结果不为None
#
# self.a = "None"
# self.assertIsNotNone(self.a,msg = "断言失败,预期结果与实际结果不符")
#
# unittest.main()
"""
应用unittest 单元测试框架 写自动化脚本
"""
from selenium import webdriver
from time import sleep
# 定位方法的封装
def find_element(driver,element):
method = element[0].lower()
value = element[1]
if method == 'id':
return driver.find_element_by_id(value)
elif method == 'class' :
return driver.find_element_by_class_name(value)
elif method == 'text' :
return driver.find_element_by_link_text(value)
elif method == 'name' :
return driver.find_element_by_name(value)
elif method == 'xpath' :
return driver.find_element_by_xpath(value)
elif method == 'css' :
return driver.find_element_by_css_selector(value)
elif method == 'text':
return driver.find_element_by_partial_link_name(value)
def send_text(driver,element,text):
# 二次封装一个输出内容的方法
return find_element(driver,element).send_keys(text)
def click_element(driver,element):
return find_element(driver, element).click()
class MyClass(unittest.TestCase):
def setUp(self):
# 用例的前置条件,登陆
self.driver= webdriver.Chrome()
self.driver.get('http://192.168.33.36/bbs/forum.php')
self.driver.maximize_window()
send_text(self.driver,("xpATH",'//*[@id="ls_username"]'),'admin')
sleep(1)
send_text(self.driver, ("xpath",'//*[@id="ls_password"]'),'123456')
sleep(1)
click_element(self.driver, ("xpath",'//*[@id="lsform"]/div/div/table/tbody/tr[2]/td[3]/button'))
sleep(1)
def tearDown(self):
# 完成之后关闭窗口
self.driver.quit()
def test_01_setting(self):
#操作设置
click_element(self.driver, ("text",'设置'))
sleep(2)
def test_02_manager(self):
# 操作用户管理
click_element(self.driver, ("tex1t","管理中心"))
sleep(2)
unittest.main()
|
|