zoukankan      html  css  js  c++  java
  • 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())

    运行结果为:

    ['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())
    
      
    
    
    
     
     
  • 相关阅读:
    oc对象的内存管理
    OC类的本质,深入探讨,load方法和initialize方法
    OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数
    OC的类的构造方法
    OC的@property 和 @synthesize id
    HTML5 Canvas时间效果
    各浏览器的Hack写法【转】
    你自认为理解了JavaScript?【转】
    八大疯狂的HTML5 Canvas及WebGL动画效果——8 CRAZY ANIMATIONS WITH WEBGL AND HTML5 CANVAS【收藏】
    一些达成共识的JavaScript编码风格约定【转】
  • 原文地址:https://www.cnblogs.com/sunny0/p/7791972.html
Copyright © 2011-2022 走看看