一、分离数据时,需读取文档中存储的数据,但TXT文件的数据读取出来的类型为列表,而测试用例中断言的时候验证的是字符串,所以需要将列表转为字符串
#1字符串————》列表 str1='hello panda' list1=str1.split(' ') print list1,type(list1) #结果:['hello', 'panda'] <type 'list'> #列表---》字符串 list2=['webdriver','autotest','23'] str2=''.join(list2) #''是指以"空":‘’链接列中中的数据,也可以空格链接‘ ’ print str2,type(str2) #结果:webdriverautotest23 <type 'str'> #unicode--->字符串 u=u'panda' print type(u),u.encode('utf-8'), type(u.encode('utf-8')), #结果:<type 'unicode'>,panda <type 'str'> #字符串--->unicode str3='panda' print str3.decode('gbk'),type(str3.decode('gbk')) #结果:panda <type 'unicode'>
二、读取TXT文档里的内容 尧都区的结果为str类型
log.txt 里的内容为:
请您输入手机/邮箱/用户名
请您输入密码
请您输入验证码
!/usr/bin/env.python #-*-coding:utf-8-*- import os f=open(os.path.join(os.path.dirname(__file__),'log1.txt'),'r') print f.readlines() print type(f.readlines())
运行结果为:
['xe8xafxb7xe6x82xa8xe8xbex93xe5x85xa5xe6x89x8bxe6x9cxba/xe9x82xaexe7xaexb1/xe7x94xa8xe6x88xb7xe5x90x8d
', 'xe8xafxb7xe6x82xa8xe8xbex93xe5x85xa5xe5xafx86xe7xa0x81
', 'xe8xafxb7xe6x82xa8xe8xbex93xe5x85xa5xe9xaax8cxe8xafx81xe7xa0x81']
<type 'list'>
从结果可以看出,读取出的内容是列表类型,!但是!列表中的元素前几个最后都有换行符‘
’,直接按索引去取,取到的值里包含‘
’
所以,可以利用字符串转列表将‘ ’去掉:split(‘ ’)(split()方法同时又转为了列表)<-------将原list先转换为str:''.join()
import os f=open(os.path.join(os.path.dirname(__file__),'log1.txt'),'r') str1=''.join(f.readlines()) list1=str1.split(' ') print type(str1) ,type(list1) print list1 print list1[0]
运行结果为:
<type 'str'> <type 'list'>
['xe8xafxb7xe6x82xa8xe8xbex93xe5x85xa5xe6x89x8bxe6x9cxba/xe9x82xaexe7xaexb1/xe7x94xa8xe6x88xb7xe5x90x8d', 'xe8xafxb7xe6x82xa8xe8xbex93xe5x85xa5xe5xafx86xe7xa0x81', 'xe8xafxb7xe6x82xa8xe8xbex93xe5x85xa5xe9xaax8cxe8xafx81xe7xa0x81']
请您输入手机/邮箱/用户名
将多次转换组合到一起:
先将读出的内容转为字符串,再将字符串以换行符转为列表
list=(''.join(f.readlines())).split(' )
三、测试百度登录,将提示的验证信息分离在TXT文件中,断言时,以索引的方式读取
以下代码将(''.join(f.readlines())).split(' )取得的列表存入提前他定义的列表list1中,
!/usr/bin/env.python #-*-coding:utf-8-*- from selenium import webdriver import unittest import os class baiduTest(unittest.TestCase): @classmethod def setUp(cls): cls.driver=webdriver.Firefox() cls.driver.maximize_window() cls.driver.implicitly_wait(30) cls.driver.get('https://www.baidu.com/') def test_01(self): '''验证用户名和密码为空时,系统的提示信息是否正确''' self.driver.find_element_by_link_text(u'登录').click() self.driver.find_element_by_id('TANGRAM__PSP_10__submit').click() text=self.driver.find_element_by_id('TANGRAM__PSP_10__error').text self.assertEqual(text.encode('utf-8'),self.readlog()[0]) def test02(self): '''验证输入用户名,不输入密码时,系统的提示信息是否正确''' self.driver.find_element_by_link_text(u'登录').click() self.driver.find_element_by_id('TANGRAM__PSP_10__userName').send_keys('18291875606') self.driver.find_element_by_id('TANGRAM__PSP_10__submit').click() text = self.driver.find_element_by_id('TANGRAM__PSP_10__error').text self.assertEqual(text.encode('utf-8'),self.readlog()[1]) @classmethod def tearDown(cls): cls.driver.quit() @staticmethod def suite(): suite=unittest.makeSuite(baiduTest) return suite def readlog(self): list1=[] with open(os.path.join(os.path.dirname(__file__),'log1.txt'),'r') as f: for item in (''.join(f.readlines())).split(' '): list1.append(item) return list1 if __name__=='__main__': unittest.TextTestRunner(verbosity=2).run(baiduTest.suite())