一、实践准备

  在 UI 自动化测试中,也可以把测试的数据数据存储在后缀为 txt 的记事本文件中,对记事本的操作一般包含读写文件和写入文件。

  其中,r 为只读属性,r+ 是读写属性,w 是只写属性,w+ 是读写属性,a+ 是读写方式。

  下面实现向记事本中写入文本内容再读出来,实现代码如下:

def txt():
    '''对记事本操作'''
    f = open('file1.txt','w')
    f.write('记事本')
    f.close()
    f = open('file1.txt','r')
    print(f.read())
    f.close()#文件打开后记得关闭

txt()

  f = open('file1.txt','w') 表示不管当前路径下是否存在 file1.txt,都会创建一个记事本文件,文件打开后切记要关闭。

  可以通过 with 的方式实现系统内部的文件关闭处理而不需要专门关闭文件,实现代码如下:

def txt():
    '''对记事本的操作'''
    with open('file2.txt','w') as f:
        f.write('第二个记事本')
    with open('file2.txt','r') as f:
        print(f.read())

txt()

二、实践

1、以新浪登录页面为例,记事本 sina.txt 文件内容如下(第一行是空的):


admin 请输入邮箱名 您输入的邮箱名格式不正确 admin@sina.com 登录名或密码错误 请输入密码

2、实现脚本如下:

__author__ = "XXX"

import unittest
from selenium import webdriver
import os
import time as t

def getTxtData(index):
    with open(os.path.join(os.path.dirname(__file__),'sina.txt'),'r',encoding='utf-8') as f:
        d = f.readlines()
    return d[index]

class SinaLogin(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.get('http://mail.sina.com.cn/')
        self.driver.implicitly_wait(30)

    def tearDown(self):
        t.sleep(3)
        self.driver.quit()

    def login(self,username,password):
        '''验证:测试新浪邮箱登录N中情况'''
        self.driver.find_element_by_id('freename').send_keys(username)
        self.driver.find_element_by_id('freepassword').send_keys(password)
        self.driver.find_element_by_link_text(u'登录').click()

    def divText(self):
        divText = self.driver.find_element_by_xpath('/html/body/div[1]/div/div[2]/'
                                                    'div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
        # 在freeError-span[1]里,根据情况输入情况变化的
        return (divText.text).encode('utf-8')

    def divText2(self):
        divText = self.driver.find_element_by_xpath('/html/body/div[1]/div/div[2]/'
                                                    'div/div/div[4]/div[1]/div[1]/div[1]/span[2]')
        # 在freeError-apan[2]里,根据情况输入情况变化的
        return (divText.text).encode('utf-8')

    def test_username_password_null(self):
        '''验证:测试用户名和密码都为空的错误提示信息'''
        # 都为空,提示:请输入邮箱名
        self.login(getTxtData(0),getTxtData(0))
        self.assertTrue(self.divText(),getTxtData(2))

    def test_sina_password_null(self):
        '''验证:测试用户为空密码不为空的错误提示信息'''
        # 用户名:空,密码:admin,提示:请输入邮箱名
        self.login(getTxtData(0), getTxtData(1))
        self.assertTrue(self.divText(), getTxtData(2))

    def test_sina_username_format(self):
        '''验证:测试用户邮箱格式不正确的错误提示信息'''
        # 用户名:admin@sina.com,密码:空,提示:请输入密码
        self.login(getTxtData(4), getTxtData(0))

        self.assertTrue(self.divText2(), getTxtData(6))

if __name__ == '__main__':
    unittest.main(verbosity=2)

  以上,sina.txt 文件就在当前目录下,三个测试用例不分先后执行的。效果如下:

 

谢谢查看!

2019-11-17

posted on 2019-11-17 14:35  三天乐趣  阅读(193)  评论(0编辑  收藏  举报