• 007 selenium 单元测试/unittest/禅道测试


    '''
    时间:2018/12/05
    功能:单元测试/unittest/禅道测试
    目录:
        一: 单元测试
            1 测试代码
        二: unittest
            1 执行流程
            2 断言使用
            3 __main__ 
        三: 禅道测试
            1 普通测试
            2 unittest 
        四: 未解决
    五: 思考
    '''

    一: 单元测试
      1 测试代码

    def add(a, b):
        c = a + 2 * b
        return c
    
    
    if __name__ == "__main__":
        d = add(2, 2)
        print(d)

    二: unittest
      1 执行流程

    # coding:utf-8
    import unittest
    
    class A8(unittest.TestCase):
        def setUp(self):
             print("setUp")
        def tearDown(self):
             print("tearDown")
    
        @classmethod
        def setUpClass(cls):
            print("setUpClass")
        @classmethod
        def tearDownClass(cls):
            print("tearDownClass")
    
        def testAdd(self):  # test method names begin with 'test'
            print("testAdd")
            self.assertEqual((1 + 2), 3)
            self.assertEqual(0 + 1, 1)
        def testMultiply(self):
            print("testMultiply")
            self.assertEqual((0 * 10), 0)
            self.assertEqual((5 * 8), 40)
        def testAsd(self):
            print("testAsd")
            self.assertEqual((1 + 1), 2)
            self.assertEqual((1 + 1), 2)
    
    if __name__ == '__main__':
        unittest.main()
    Testing started at 18:13 ...
    setUpClass
    setUp
    testAdd
    tearDown
    setUp
    testAsd
    tearDown
    setUp
    testMultiply
    tearDown
    tearDownClass
    每次用例 - 最先执行: def setUp(self):
    每次用例 - 最后执行: def tearDown(self):
    
    所有用例 - 最先执行一次: def setUpClass(cls):
    所有用例 - 最后执行一次: def tearDownClass(cls):
    
    class和用例执行顺序排序: 大写字符(A-Z),小写字母(a-z), 数字(0-9)

      2 断言使用

    常用断言
        assertTrue         条件为真    
        assertFalse        条件为假
        
        assertEqual        数字相同
        assertNotEqual     数字不同
        
        assertIn        字符串 - 包含
        assertNotIn     字符串 - 不包含
        
        self.assertIsNone(x)    #判断为空
        self.assertIsNotNone(x)    #判断不为空
        
        所有的测试结果判断,都可以用True和False来判断。 

      3 __main__

        (1) 没有 -  if __name__ == "__main__":

    def add(a, b):
        c = a + 2 * b
        return c
    
    d = add(2, 2)
    print(d)

    1 : 保存为: t001_test_unittest.py

    import t001_test_unittest
    
    a = t001_test_unittest.add(4, 4)
    print(a)
    
    print(t001_test_unittest.__name__)

    1 : 保存为: t002_test_main.py

    2 : 执行t002_test_main.py 

    4
    12
    t001_test_unittest

        (2) 使用 -  if __name__ == "__main__":

    def add(a, b):
        c = a + 2 * b
        return c
    
    if __name__ == "__main__":
        d = add(2, 1)
        print(d)

    1 : 保存为: t001_test_unittest.py

    import t001_test_unittest
    
    a = t001_test_unittest.add(4, 4)
    print(a)
    
    print(t001_test_unittest.__name__)

    1 : 保存为: t002_test_main.py

    2 : 执行t002_test_main.py 

    12
    t001_test_unittest

    三: 禅道测试
      1 普通测试

    from selenium import webdriver
    import time
    
    driver = webdriver.Firefox()
    driver.get("http://127.0.0.1/zentao")
    time.sleep(1)
    
    # 登录禅道
    driver.find_element_by_id("account").send_keys("admin")
    driver.find_element_by_name("password").send_keys("1234567")
    driver.find_element_by_id("keepLoginon").click()
    driver.find_element_by_id("submit").click()
    time.sleep(1)
    
    
    # 判断登录
    try:
        text = driver.find_element_by_css_selector("#userMenu>a").text
        print("登录成功")
    except:
        print("登录失败")
    
    
    # 退出程序
    driver.quit()

      2 unittest

    # coding:utf-8
    from selenium import webdriver
    import time
    import unittest
    
    class LoginTest(unittest.TestCase):
        '''登录类的案例'''
        @classmethod
        def setUpClass(cls):
            cls.driver = webdriver.Firefox()
    
        @classmethod
        def tearDownClass(cls):
            cls.driver.quit()   # 编辑器问题
    
        def setUp(self):
            self.driver.get("http://127.0.0.1/zentao/user-login-L3plbnRhby8=.html")
    
        def tearDown(self):
            self.is_alert_exist()
            self.driver.delete_all_cookies() # 退出登录
            self.driver.refresh()
    
        def get_login_username(self):
            try:
                t = self.driver.find_element_by_css_selector("#userMenu>a").text
                print(t)
                return t
            except:
                return ""
    
        def is_alert_exist(self):
            '''判断alert是不是在'''
            try:
                time.sleep(2)
                alert = self.driver.switch_to.alert
                text = alert.text
                alert.accept() # 用alert 点alert
                return text
            except:
                return ""
    
        def test_01(self):
            '''登录成功的案例'''
            time.sleep(2)
            self.driver.find_element_by_id("account").send_keys("admin")
            self.driver.find_element_by_name("password").send_keys("123456")
            self.driver.find_element_by_id("submit").click()
            # 判断是否登陆成功
            time.sleep(3)
            t = self.get_login_username()
            print("获取的结果:%s"%t)
            self.assertTrue("admin" == t)
    
        def test_02(self):
            '''登录失败的案例'''
            time.sleep(2)
            # 错误账号和密码
            self.driver.find_element_by_id("account").send_keys("admin1112")
            self.driver.find_element_by_name("password").send_keys("")
            self.driver.find_element_by_id("submit").click()
            # 判断是否登陆成功
            time.sleep(3)
            t = self.get_login_username()
            print("登录失败,获取结果:%s"%t)
            self.assertTrue("" == t)  # 断言失败截图
    
    
    if __name__ == "__main__":
        unittest.main()

    四: 未解决

    禅道登录失败情况,获取错误信息失败。
    from selenium import webdriver
    import time
    
    driver = webdriver.Firefox()
    driver.get("http://127.0.0.1/zentao")
    time.sleep(1)
    
    # 登录禅道
    driver.find_element_by_id("account").send_keys("admin")
    driver.find_element_by_name("password").send_keys("1234567")
    driver.find_element_by_id("keepLoginon").click()
    driver.find_element_by_id("submit").click()
    time.sleep(1)
    
    # 判断登录
    try:
        text = driver.find_element_by_css_selector("#userMenu>a").text
        print("登录成功")
    except:
        print("登录失败")
        a = driver.switch_to.alert
        print(a.text)                # 打印文本
        a.accept()                   # 点击确定
    
    # 退出程序
        driver.quit()

    五: 思考

    返回数据
    返回原则:越简单越好,越简单越容易判断。
    返回内容: 空值、True、False、词语、等等。
     
  • 相关阅读:
    关于升级至12cR2版本的Optimizer 自适应特性的设置建议
    sqlserver varchar转换为decimal语句
    大数据相关的面试题
    介绍哈希函数及解决冲突的方法
    Java爬虫爬取网站电影下载链接
    微软网络安全服务Azure Sentinel——安全事件管理平台(SIEM)
    Adversarial Logit Pairing——防御对抗样本的另外一种思路,将对抗样本加入训练数据集
    Defense-GAN——防御对抗样本,本质上就是在用类似编码解码器(论文用了GAN)来进行表征学习,使得算法模型更健壮
    纳什均衡——非合作博弈,囚徒困境
    每当有人问我数据不均衡的处理时候,我推荐他使用smote
  • 原文地址:https://www.cnblogs.com/huafan/p/10070227.html
Copyright © 2020-2023  润新知