美文网首页
8-6(selenium-unitest)

8-6(selenium-unitest)

作者: 不知名的二狗 | 来源:发表于2019-08-25 21:14 被阅读0次

    一、单元测试

    小例子
    def add(a,b):
        sum = a + b
        return sum
    if __name__ == "__main__":
        print(add(1,2))
    

    二、测试用例

    自动化用例

    自动化用例.png

    三、测试框架

    • 登陆案例
      注意读取本地html的方式
    from selenium import webdriver
    import  time
    import os
    import unittest
    class LoginTest(unittest.TestCase):
        def test_login(self):
            driver = webdriver.Chrome()
            driver.get('file:///'+os.path.abspath('login.html'))
            time.sleep(3)
            driver.find_element_by_name("user").send_keys("admin")
            driver.find_element_by_name("password").send_keys("123")
            driver.find_element_by_id("tijiao").click()
            time.sleep(10)
            t = driver.find_element_by_tag_name("body").text
            print(t)
            # if t == "登陆成功":
            #     print("pass")
            # else:
            #     print("fail")
            # driver.close()
            # driver.quit()
            self.assertTrue(t == "登陆成功")
    

    login.html(登录页)

    <!DOCTYPE html>
    <html>
    <title>登陆页面</title>
    <body>
    账号:
    <input type = text name = "user" size = 16 />
    密码:
    <input type = password name = "password" size = 16 />
    <button type = submit value = submit id = tijiao ><a href="index.html">登陆</a></button>
    </body>
    </html>
    

    index.html(登陆成功页)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    登陆成功
    </body>
    </html>
    
    • 编写测试类
    import unittest
    # 类名遵循驼峰命名法
    class JisuanTestCase(unittest.TestCase):
        def setUpClass(cls):
            print("用例前只执行一次")
        def tearDownClass(cls):
            print("所有用例后执行一次")
        # # 每个用例打开前都会执行
        # def setUp(self):
        #     print("打开浏览器")
        # # 每个用例完成都会执行一次
        # def tearDown(self):
        #     print("关闭浏览器")
        # 方法名以test开头
        def testAdd(self):
            self.assertEqual((1+2),3)
            self.assertEqual(0+1,1)
    
        def testMultiply(self):
            self.assertEqual((0*10),0)
            self.assertEqual((5*8),40)
    if __name__ == "__main__":
        unittest.main()
    

    注意:

    如果其中某个方法有报错不影响其他方法的测试

    4.assert断言

    assertLocation(判断当前是在正确的页面)
    assertTitle(检查当前页面的 title 是否正确)
    assertValue(检查 input 的值, checkbox 或 radio,有值为”on”无为”off”)
    assertSelected(检查 select 的下拉菜单中选中是否正确)
    assertSelectedOptions(检查下拉菜单中的选项的是否正确)
    assertText(检查指定元素的文本)
    assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)
    assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)
    assertAttribute(检查当前指定元素的属性的值)
    assertTable(检查 table 里的某个 cell 中的值)
    assertEditable(检查指定的 input 是否可以编辑)
    assertNotEditable(检查指定的 input 是否不可以编辑)
    assertAlert(检查是否有产生带指定 message 的 alert 对话框)
    verifyTitle (检查预期的页面标题)
    verifyTextPresent (验证预期的文本是否在页面上的某个位置)
    verifyElementPresent(验证预期的UI元素,它的HTML标签的定义,是否在当前网页上)
    verifyText(核实预期的文本和相应的HTML标签是否都存在于页面上)
    verifyTable(验证表的预期内容)
    waitForPageToLoad(暂停执行,直到预期的新的页面加载)
    waitForElementPresent (等待检验某元素的存在。为真时,则执行)

    相关文章

      网友评论

          本文标题:8-6(selenium-unitest)

          本文链接:https://www.haomeiwen.com/subject/syekectx.html