unittest之三:字符串与列表的相互转换与分离数据时的应用

一、分离数据时,需读取文档中存储的数据,但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())

运行结果为:

['\xe8\xaf\xb7\xe6\x82\xa8\xe8\xbe\x93\xe5\x85\xa5\xe6\x89\x8b\xe6\x9c\xba/\xe9\x82\xae\xe7\xae\xb1/\xe7\x94\xa8\xe6\x88\xb7\xe5\x90\x8d\n', '\xe8\xaf\xb7\xe6\x82\xa8\xe8\xbe\x93\xe5\x85\xa5\xe5\xaf\x86\xe7\xa0\x81\n', '\xe8\xaf\xb7\xe6\x82\xa8\xe8\xbe\x93\xe5\x85\xa5\xe9\xaa\x8c\xe8\xaf\x81\xe7\xa0\x81']
<type 'list'>


从结果可以看出,读取出的内容是列表类型,!但是!列表中的元素前几个最后都有换行符‘\n’,直接按索引去取,取到的值里包含‘\n’

所以,可以利用字符串转列表将‘\n’去掉:split(‘\n’)(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('\n')
print type(str1) ,type(list1)
print list1
print list1[0]

 

运行结果为:

<type 'str'> <type 'list'>
['\xe8\xaf\xb7\xe6\x82\xa8\xe8\xbe\x93\xe5\x85\xa5\xe6\x89\x8b\xe6\x9c\xba/\xe9\x82\xae\xe7\xae\xb1/\xe7\x94\xa8\xe6\x88\xb7\xe5\x90\x8d', '\xe8\xaf\xb7\xe6\x82\xa8\xe8\xbe\x93\xe5\x85\xa5\xe5\xaf\x86\xe7\xa0\x81', '\xe8\xaf\xb7\xe6\x82\xa8\xe8\xbe\x93\xe5\x85\xa5\xe9\xaa\x8c\xe8\xaf\x81\xe7\xa0\x81']
请您输入手机/邮箱/用户名

 将多次转换组合到一起:

先将读出的内容转为字符串,再将字符串以换行符转为列表

list=(''.join(f.readlines())).split('\n)

三、测试百度登录,将提示的验证信息分离在TXT文件中,断言时,以索引的方式读取

以下代码将(''.join(f.readlines())).split('\n)取得的列表存入提前他定义的列表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('\n'):
                list1.append(item)
        return list1
    
if __name__=='__main__':
    unittest.TextTestRunner(verbosity=2).run(baiduTest.suite())

  

 

 
 
posted @ 2017-11-07 15:30  panda901  阅读(496)  评论(0编辑  收藏  举报