• 数据驱动和关键字驱动简单例子


    数据驱动和关键字驱动简单例子(登录)

    数据驱动:程序和数据分离,测试数据存入一个文件中,脚本存入另一个文件中

    公司项目为保密项目,地址使用xxx代替

    数据文件:D:\test\loginData.txt
    文件内容:
    admin_cyl||123456a
    admin_test||a123456
    test_shi||a123456

    代码:

    #encoding=utf-8

    import unittest
    from selenium import webdriver
    import time
    class VisitClosePlaceByIe(unittest.TestCase):
        def setUp(self):
            #启动Ie浏览器
            self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer")
        def test_visitURL(self):
            with open("D:\test\loginData.txt") as fp:
                for line in fp:
                    username,password = line.split("||")
                    password = password.strip().decode("gbk")
                    self.driver.get("xxx")
                    self.driver.find_element_by_id("username")
                    self.driver.find_element_by_id("username").send_keys(username)
                    self.driver.find_element_by_id("password")
                    self.driver.find_element_by_id("password").send_keys(password)
                    self.driver.find_element_by_id("button")
                    self.driver.find_element_by_id("button").click()
                    time.sleep(3) #不加等待时间,则page_source获取的是登录页面的源代码
                    assert u"封闭学校管理平台" in self.driver.page_source ,"Keyword not in page"

        def tearDown(self):
            self.driver.quit()


    关键字驱动:将测试用例的执行步骤存放在文件中,每个步骤单独封闭成一个函数,以这个函数名作为关键字,将函数名及传参写入文件中,第个步骤对应一行文件
    数据文件:D:\test\schoolLogin.txt
    文件内容:
    visitUrl||["xxx"]
    find_ele||["username","admin_cyl"]
    find_ele||["password","123456a"]
    click_login||["button"]
    assert_word||[u"封闭学校管理平台"]


    代码:school_login.py
    #encoding=utf-8
    import unittest
    from selenium import webdriver
    import time

    class VisitSchool(unittest.TestCase):
        def setUp(self):
            #启动IE浏览器
            self.driver = webdriver.Ie(executable_path="D:\IEDriverServer")
        def visitUrl(self,url):
            #由于参数个数不一致,所以使用列表做为参数,再用eval将列表字符串转化为列表
            url = eval(url)
            #打开网页
            self.driver.get(url[0])
        def find_ele(self,arg):
            arg = eval(arg)
            #定位输入框并输入值
            self.driver.find_element_by_id(arg[0]).send_keys(arg[1])
            #本来想用两个函数,一个定位,一个输入值,但是输入函数中无法使用定位,所以合并成一个函数
        def click_login(self,id):
            id = eval(id)
            #定位按钮并点击
            self.driver.find_element_by_id(id[0]).click()
        def assert_word(self,keyword):
            #等待3秒,以便页面加载,否则page_source是登录页面的
            time.sleep(3)
            keyword = eval(keyword)
            #断言
            assert keyword[0].strip() in self.driver.page_source, "Keyword not in page"

        def test_schoolLogin(self):
            with open("D:\test\schoolLogin.txt") as fp:
                for line in fp:
                    action,data = line.split("||")
                    action = action.strip()
                    data = data.decode("gbk").strip()
                    #拼接执行命令
                    exec("self."+action+"(u'"+data+"')")

        def tearDown(self):
             self.driver.quit()

    if __name__ == "__main__":
        unittest.main()

  • 相关阅读:
    一个可以代替冗长switch-case的消息分发小框架
    [JCIP笔记](五)JDK并发包
    [JCIP笔记](四)踩在巨人的肩上
    [JCIP笔记] (三)如何设计一个线程安全的对象
    工作两年的五个感想
    [JCIP笔记] (二)当我们谈线程安全时,我们在谈论什么
    [JCIP笔记] (一)多线程的起源
    每天进步一点点------CORDIC (一)
    每天进步一点点------Alpha半透明图形叠加算法Matlab+Verilog实现
    每天进步一点点------Altium Designer Rules规则详解
  • 原文地址:https://www.cnblogs.com/test-chen/p/10321164.html
Copyright © 2020-2023  润新知