Python-动态获取项目路径
项目路径:就是你在哪个目录下打开的pycharm,这个目录就是你项目路径。
导入包的时候就是从该目录下开始导入。
项目框架如下图所示:
没有获取动态目录之前,我们在测试用例读取excel内容时需要写上绝对路径,如果在多个py文件中都这样定义,excel文件路径发生变化时,维护起来相对麻烦,接下来就来看下如何动态获取文件路径? test.login.py内容如下:
import unittest from funcs import login from common.excel import read_excel from ddt import ddt, data # r :不转义 file_path = rD:PycharmProjects框架搭建datacases.xlsx excel_data = read_excel(file_path, Sheet1) @ddt class TestLogin(unittest.TestCase): @data(*excel_data) def test_login(self, row): # row表示每次从data这个list当住取出一个数据 # 代表一组测试数据,相当于for row in data # 但不同点在于:会自动生成一个新的测试用例方法test_login_1() params_str = row[data] params = eval(params_str) username = params[username] pwd = params[pwd] expected = eval(row[expected]) actual = login(username, pwd) self.assertEqual(expected, actual)
动态获取文件路径,使用py文件作为配置文件相对简单,直接导入变量就可以,且该项目是基于python的,我们在config目录下创建config.py文件,实现动态获取excel文件的路径:
import os # 获取当前文件的绝对路径 current_file = os.path.abspath(__file__) # print(current_file) # 获取当前文件所在目录 current_dir = os.path.dirname(current_file) # print(current_dir) # 获取当前文件所在项目 current_obj = os.path.dirname(current_dir) # print(current_obj) # 获取测试数据的所在目录 config_dir = os.path.join(current_obj, data) # 获取cases.xlsx文件的绝对路径 config_file = os.path.join(config_dir, cases.xlsx) # print(config_file)
可以看出我们在config.py内定义了多个变量进行动态获取目录及文件的绝对路径,我们可以打印出各变量的具体输出内容:
此时,test.login.py可以修改为:
import unittest from funcs import login from common.excel import read_excel from ddt import ddt, data from config.config import config_file # r :不转义 # file_path = rD:PycharmProjects框架搭建datacases.xlsx # excel_data = read_excel(file_path, Sheet1) excel_data = read_excel(config_file, Sheet1) @ddt class TestLogin(unittest.TestCase): @data(*excel_data) def test_login(self, row): # row表示每次从data这个list当住取出一个数据 # 代表一组测试数据,相当于for row in data # 但不同点在于:会自动生成一个新的测试用例方法test_login_1() params_str = row[data] params = eval(params_str) username = params[username] pwd = params[pwd] expected = eval(row[expected]) actual = login(username, pwd) self.assertEqual(expected, actual)
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
珍宝鸭的力扣练习(17):有限状态机