发布于2026-07-20 阅读(0)
扫一扫,手机访问
先给个结论:Locust 它自己不会主动去读 `.env` 文件,这事儿得靠我们手动来。要么用 `python-dotenv` 在 Python 层面加载,要么在 Shell 启动命令里显式注入。否则,你写的 `os.environ.get()` 大概率会返回空值。下面把两种靠谱方案掰开揉碎讲清楚。
很多人在 Locust 测试脚本里直接用 `os.environ.get("VALUE")`,结果死活拿不到值,返回空字符串。根本原因其实很简单:Locust 进程启动时,压根儿就没自动加载 .env 文件。这和 Django、Flask 那些框架不同,Locust 本身不集成 dotenv 功能。`.env` 文件说白了就是个约定俗成的配置存储格式,必须由我们显式解析并注入到进程环境里,它才会生效。
那么,怎么解决?
最省心的办法,是在 Python 层面直接上手。在 `locust.py` 文件开头加上对 `python-dotenv` 的支持(记得先装:`pip install python-dotenv`):
from dotenv import load_dotenv
import os
from locust import HttpUser, task, between
# 自动加载同目录下的 .env 文件(支持相对路径)
load_dotenv()
apiKey = os.environ.get("VALUE", "")
if not apiKey:
raise ValueError("Missing required environment variable: VALUE")
class Api(HttpUser):
wait_time = between(1, 5)
@task
def test_api(self):
self.client.get(f"/api/test/apiKey={apiKey}")
有几个细节需要注意:
load_dotenv() 默认加载当前工作目录下的 `.env` 文件。如果文件在别的路径(比如项目根目录),记得传 `dotenv_path` 参数,比如 `load_dotenv(".env")` 或 `load_dotenv("../.env")`。如果你不想多装一个包,或者你正在走 CI/CD 管道,那 Shell 侧注入也是个好选择。在启动命令里由 Shell 直接加载并导出变量:
# Linux/macOS:使用 set -a + source(推荐) set -a; source .env; set +a; locust -f locust.py
或者用 Makefile 来管理(虽然原答案里也有示例,但下面这个更简洁可靠):
# 确保 .env 格式为 KEY=VALUE(无空格/引号),然后: export $(grep -v '^#' .env | xargs) && locust -f locust.py
这行命令先过滤掉注释行,再把键值对导出为环境变量,接着启动 Locust。一步到位,干净利落。
说到底,方法就上面两种,选一个顺手的一劳永逸。现在,去试试吧。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8