找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
""""""
"""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()


分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册