Python教程

Python-动态获取项目路径

本文主要是介绍Python-动态获取项目路径,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

项目框架如下图所示:

没有获取动态目录之前,我们在测试用例读取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 = r'D:\PycharmProjects\框架搭建\data\cases.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 = r'D:\PycharmProjects\框架搭建\data\cases.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)

这篇关于Python-动态获取项目路径的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!