如何用pyinstaller打包locust文件
How to package locust file with pyinstaller
在虚拟环境中我安装了locust。
我想创建可分发的包,以便任何用户都可以 运行 加载测试。
我用的是pyinstaller。
exe 文件已创建,但当我 运行 它没有任何反应。
from locust import HttpUser, TaskSet, task
import orjson as json
def create_post(self):
paramsDict = {}
paramsDict = json.loads('{ ...myjson.. }')
params = json.dumps(paramsDict) #for orjson
headers = {'content-type': 'application/json','Accept-Encoding':'gzip'}
response = self.client.post("/",data= params, headers=headers, name = "Post query")
print(f'response -> {response}')
class WebsiteUser(HttpUser):
tasks = [create_post]
正如 Axel 指出的那样,我使用 locust 作为库。
我用 pyinstaller 构建并测试 运行s 只是网页没有显示
I build with pyinstaller but web did not appear `response -> <Response [200]>
Traceback (most recent call last):
File "gevent\pywsgi.py", line 999, in handle_one_response
File "gevent\pywsgi.py", line 945, in run_application
File "flask\app.py", line 2464, in __call__
File "flask\app.py", line 2450, in wsgi_app
File "flask\app.py", line 1867, in handle_exception
File "flask\_compat.py", line 39, in reraise
File "flask\app.py", line 2447, in wsgi_app
File "flask\app.py", line 1952, in full_dispatch_request
File "flask\app.py", line 1821, in handle_user_exception
File "flask\_compat.py", line 39, in reraise
File "flask\app.py", line 1950, in full_dispatch_request
File "flask\app.py", line 1936, in dispatch_request
File "locust\web.py", line 419, in wrapper
File "locust\web.py", line 132, in index
File "flask\templating.py", line 138, in render_template
File "jinja2\environment.py", line 930, in get_or_select_template
File "jinja2\environment.py", line 883, in get_template
File "jinja2\environment.py", line 857, in _load_template
File "jinja2\loaders.py", line 115, in load
File "flask\templating.py", line 60, in get_source
File "flask\templating.py", line 89, in _get_source_fast
jinja2.exceptions.TemplateNotFound: index.html
2021-01-11T11:29:52Z {'REMOTE_ADDR': '127.0.0.1', 'REMOTE_PORT': '61083', 'HTTP_HOST': 'localhost:8089', (hidden keys: 31)} failed with TemplateNot
模板需要包含在构建中。
我在 spec 文件中添加了数据部分以及静态 java 脚本和 css
datas=[('<path>\Lib\site-packages\locust\templates', 'locust\templates'),('<path>\Lib\site-packages\locust\static', 'locust\static')],
通过 Inno Setup,我还将那些添加到文件夹中,使其与可执行文件位于同一文件夹中。
并显示网页。
一切都取决于您期望如何执行测试以及您真正打包的是什么。 Locust 有不同的使用方法。假设您想将测试文件打包为可执行文件,您可能需要在文件中包含一个使用 locust 作为 library
的主入口点
如果您正在打包 locust 本身和包含测试文件的 virtualenv,您可能需要指定如何 运行 locust 作为命令并将测试文件作为命令行参数传递
在虚拟环境中我安装了locust。 我想创建可分发的包,以便任何用户都可以 运行 加载测试。 我用的是pyinstaller。 exe 文件已创建,但当我 运行 它没有任何反应。
from locust import HttpUser, TaskSet, task
import orjson as json
def create_post(self):
paramsDict = {}
paramsDict = json.loads('{ ...myjson.. }')
params = json.dumps(paramsDict) #for orjson
headers = {'content-type': 'application/json','Accept-Encoding':'gzip'}
response = self.client.post("/",data= params, headers=headers, name = "Post query")
print(f'response -> {response}')
class WebsiteUser(HttpUser):
tasks = [create_post]
正如 Axel 指出的那样,我使用 locust 作为库。 我用 pyinstaller 构建并测试 运行s 只是网页没有显示
I build with pyinstaller but web did not appear `response -> <Response [200]>
Traceback (most recent call last):
File "gevent\pywsgi.py", line 999, in handle_one_response
File "gevent\pywsgi.py", line 945, in run_application
File "flask\app.py", line 2464, in __call__
File "flask\app.py", line 2450, in wsgi_app
File "flask\app.py", line 1867, in handle_exception
File "flask\_compat.py", line 39, in reraise
File "flask\app.py", line 2447, in wsgi_app
File "flask\app.py", line 1952, in full_dispatch_request
File "flask\app.py", line 1821, in handle_user_exception
File "flask\_compat.py", line 39, in reraise
File "flask\app.py", line 1950, in full_dispatch_request
File "flask\app.py", line 1936, in dispatch_request
File "locust\web.py", line 419, in wrapper
File "locust\web.py", line 132, in index
File "flask\templating.py", line 138, in render_template
File "jinja2\environment.py", line 930, in get_or_select_template
File "jinja2\environment.py", line 883, in get_template
File "jinja2\environment.py", line 857, in _load_template
File "jinja2\loaders.py", line 115, in load
File "flask\templating.py", line 60, in get_source
File "flask\templating.py", line 89, in _get_source_fast
jinja2.exceptions.TemplateNotFound: index.html
2021-01-11T11:29:52Z {'REMOTE_ADDR': '127.0.0.1', 'REMOTE_PORT': '61083', 'HTTP_HOST': 'localhost:8089', (hidden keys: 31)} failed with TemplateNot
模板需要包含在构建中。 我在 spec 文件中添加了数据部分以及静态 java 脚本和 css
datas=[('<path>\Lib\site-packages\locust\templates', 'locust\templates'),('<path>\Lib\site-packages\locust\static', 'locust\static')],
通过 Inno Setup,我还将那些添加到文件夹中,使其与可执行文件位于同一文件夹中。 并显示网页。
一切都取决于您期望如何执行测试以及您真正打包的是什么。 Locust 有不同的使用方法。假设您想将测试文件打包为可执行文件,您可能需要在文件中包含一个使用 locust 作为 library
的主入口点如果您正在打包 locust 本身和包含测试文件的 virtualenv,您可能需要指定如何 运行 locust 作为命令并将测试文件作为命令行参数传递