Python中如何在不同文件间调用变量
文件名:login_jinfive.py
-- coding:UTF-8 --
import requests import logging import unittest logging.basicConfig(level=logging.INFO)
class TestLogin(unittest.TestCase):
def setUp(self):
self.data = {
"username": "10086",
"password": "10086"
}
self.error ={
"username": "10089",
"password": "10089"
}
self.pass_null = {
"username": "10086",
"password": ""
}
self.username_null = {
"username": "",
"password": "10086"
}
self.host = "http://xx.xx.xx.xx"
self.path = "/auth/token/profile/get/"
self.url = self.host + self.path
return self.host
def test_a_req_post(self):
# noinspection PyBroadException
response = requests.post(self.url, data=self.data)
if response.status_code == 200:
logging.info(“登陆成功”)
self.response_token = response.json()[“token”]
# logging.info(“token: %s” % response_token)
else:
logging.info(“登陆失败”)
def test_b_req_error(self):
response = requests.post(self.url, data=self.error)
logging.info(response.text)
def test_c_password_null(self):
response = requests.post(self.url, data=self.pass_null)
logging.info(response.text)
def test_d_username_null(self):
response = requests.post(self.url, data=self.username_null)
logging.info(response.text)
if name == "main": unittest.main()
各位大神,我在 abc.py 文件该如何引用 login_jinfive.py 引用 response_token 这个变量呢,谢谢(我用的 python2 )
该文件为 abc.py from Login_JinFive import TestLogin
a = TestLogin.response_token
这样无法调用的报错: ValueError: no such test method in <class 'Login_JinFive.TestLogin'>: runTest
Python中如何在不同文件间调用变量
emm,可以先了解一下作用域相关知识,你就清楚了
在Python中,不同文件间调用变量的核心方法是使用模块导入。主要有几种方式:
-
直接导入变量:如果
config.py中定义了API_KEY = "123",在其他文件中用from config import API_KEY即可直接使用。 -
导入整个模块:用
import config,然后通过config.API_KEY访问。这种方式能避免命名冲突。 -
使用
__init__.py组织包:对于大型项目,把相关文件放在一个目录下,加上__init__.py文件使其成为包,然后通过from mypackage.config import API_KEY导入。 -
动态导入:可以用
importlib.import_module('config'),适合需要根据条件导入不同模块的场景。 -
单例模式或全局状态管理:对于需要跨多个文件共享的全局状态,可以创建一个专门的模块(如
global_state.py)来集中管理这些变量。
关键是要注意避免循环导入,并合理规划项目结构。简单项目用前两种方法就够了。
总结:用模块导入机制,保持结构清晰。
谢谢
legb ?
你这个 res_token 是在调用 test_a_req_post 函数的时候,才绑定到实例上的。没调用之前自然是找不到的。

