main函数传参并进行二进制数据转化_seleniu+Python 数据驱动与关键字驱动的区别...

5c4109353f92e58ab53af329145e319f.png

50b2d5c1f6100fb55d231545e1630c45.png

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

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

地址使用xxx代替

数据文件:D:testloginData.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:testloginData.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:testschoolLogin.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:testschoolLogin.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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值