商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何在 Locust 中正确加载并使用 .env 环境变量

如何在 Locust 中正确加载并使用 .env 环境变量

  发布于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 侧加载(简洁、跨平台、推荐)

最省心的办法,是在 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")`。
  • 确保 `.env` 文件里没有多余空格、没有引号、键名大小写严格匹配。比如写成 `VALUE=diuqriqjqj` 就行,别画蛇添足加引号或空格。
  • 务必把 `load_dotenv()` 放在所有 `os.environ.get()` 调用之前,而且只调用一次就够了。

✅ 方案二:Shell 侧注入(无需额外依赖,适合 CI/CD)

如果你不想多装一个包,或者你正在走 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。一步到位,干净利落。

? 总结:

  • ❌ 错误做法:只跑 `locust -f locust.py`,不加载 `.env` → 变量为空,测试直接翻车。
  • ✅ 正确做法:要么在 Python 里用 `load_dotenv()` 主动加载,要么在 Shell 里 `source` 或 `export` 后再启动。
  • ? 安全提示:千万别把敏感密钥(比如 API Key)硬编码在 `locust.py` 里。始终通过环境变量管理,同时记得把 `.env` 加入 `.gitignore`,别让私密信息跟着代码库一起飞。

说到底,方法就上面两种,选一个顺手的一劳永逸。现在,去试试吧。

本文转载于:https://www.php.cn/faq/2324112.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注