我本人比较喜欢相对路径,因为很多时候不同系统下使用绝对路径复用性太差。
问题描述:执行某个项目的所有测试用例的时候,遇到读取某个目录下面的文件,使用相对路径有时候达不到效果
比如如下结构:
test_project
test_case
pub
init.py
public.py
test_login.py
test_send_email.py
report
xxx.html
test_data
login.xml
all_test.py
我在test_login.py里面调用login.xml的时候使用相对路径没有问题(..\test_data\login.xml),
但是我在all_test.py里面去执行test_case下面的所有的测试用例就会报错,找不到login.xml文件,这是因为,在test_login.py里面使用的相对路径是相对与这个脚本的,在all_test.py里面在去调用这个脚本的时候相对路径下是找不到login.xml的。
下面是all_test.py里面的代码:
#创建测试套件
testunit=unittest.TestSuite()
#定义测试文件查找的目录
test_dir='test_case'
#定义 discover 方法的参数
testlist=unittest.defaultTestLoader.discover(test_dir,
pattern ='test*.py',
top_level_dir=None)
if __name__ == '__main__':
test_report = 'report\\'
now = time.strftime("%Y_%m_%d_%H_%M_%S") #获取当前时间
#定义个报告存放路径
filename = test_report+now+'result.html'
print filename
fp = file(filename, 'wb')
#定义测试报告
runner =HTMLTestRunner.HTMLTestRunner(
stream=fp,
title=u'126邮箱试报告',
description=u'用例执行情况:')
#运行测试用例
runner.run(testlist)
#关闭报告文件
fp.close()
解决方案:
在读取该文件的脚本里使用绝对路径
代码如下:
from os import sys,path
xml_local = path.join(path.dirname(path.dirname(path.abspath(__file__))), "test_data")
dom = xml.dom.minidom.parse(path.join(xml_local, 'login.xml'))
如有疑问,欢迎加入QQ qun :113097051