前言:
最近在测试过程中遇到了一个短信测试用例。大概就是这样的,比如说我给A手机号发送一条“Hello Word”的短信,短信发送成功后查看A手机号实际收到的短信是否是“Hello Word”,如果不是的话说明这块短信发送功能是有缺陷的。一条短信我们通过手动操作是比较容易的,但是实际测试时有好几百条短信需要测试,如果单纯靠眼睛去看的话,是很耗时耗力的,而且伴随着眼疲劳还会有“误看,漏看”情况,因此我和小伙伴为了解决这一问题,就写了一个脚本来实现该短信内容自动比较的功能。
功能说明:
这个功能期中主要分为2大功能,期中一个是通过使用appium来获取实际短信内容,然后保存到本地txt文本中去。第二个是把获取的txt文本的实际和预期短信内容比较,我们提前把预期的短信内容也是保存到本地的另一个txt文本中,这样的话就比较方便2个txt文本的比较,在这里我们把文本内容中的大小写,空格不同也视为不同,然后计较结束后生成一个html报告。今天的话和大家分享的是怎么把获得的短信内容进行比较。
代码部分:
import difflib
import sys
import operator
'''用于比较两个text文本差异值'''
#读取text文件
def read_file(file_name):
try:
file_desc = open(file_name,encoding='utf-8')
#读取后按行进行内容读取
text = file_desc.read().splitlines()
file_desc.close()
return text
except IOError as error:
print('Read file error:{0}'.format(error))
sys.eixt()
#比较两个文本并把结果生成一份html报告
def compare_file(file1,file2):
if file1 == '' or file2 == '':
print('文件路径不能为空:第一个文件路径:{0},第二个文件路径:{1}'.format(file1,file2))
sys.exit()
else:
print('正在比较文件{0}和{1}'.format(file1,file2))
text1_lines = read_file(file1)
text2_lines = read_file(file2)
diff = difflib.HtmlDiff() #创建HtmlDiff对象
result = diff.make_file(text1_lines,text2_lines)
#将结果写入到result_comparation.html中,生成一个html格式的文件
try:
with open('result_comparation.html','w',encoding = 'utf-8') as result_file:
result_file.write(result)
print('Succefully Finished!')
except IOError as error:
print('写入html文件错误:{0}'.format(error))
#文本内容比较,只比较是哪条不同,不打印具体是哪里不同。
def text_compare(file1,file2):
countexp = 0
count = 0
compare_list = []
content1 = read_file(file1)
content2 = read_file(file2)
if len(content1) != len(content2):
compare_list.append('内容有漏发或者重发情况')
return compare_list
else:
for i in range(len(content1)):
countexp = countexp + len(content1[i])
if not operator.eq(content1[i],content2[i]):
result = '第' + str(i + 1) + '和预期结果内容不一致'
compare_list.append(result)
else:
coumt = count + 1
if countexp == count:
print('测试结论:Pass')
return compare_list
if __name__ == '__main__':
file1 = 'D:\Log\smsactul.txt'
file2 = 'D:\Log\smsexcept.txt'
compare_file(file1,file2)
实际结果:
通过运行以上代码后,我们会获得实际比较结果,这里我生成的是html报告,如图所示: