我已经成功地使用Karma和Webpack为我在用Typescript编写的沙盒项目中设置了测试.代码覆盖率指标由Istanbul Instrumenter Loader收集.困扰我的是,我只报告了测试中导入的模块的覆盖范围,因此报告的100%覆盖范围实际上是一个肮脏的谎言.
寻找解决方案,我在Istanbul Instrumenter Loader的自述文件中找到了一段:
要为所有组件创建代码覆盖率报告(即使对于那些尚未进行测试的组件),您还需要所有1)源和2)测试.
测试/ index.js
Run Code Online (Sandbox Code Playgroud)// requires all tests in `project/test/src/components/**/index.js` const tests = require.context('./src/components/', true, /index\.js$/); tests.keys().forEach(tests); // requires all components in `project/src/components/**/index.js` const components = require.context('../src/components/', true, /index\.js$/); components.keys().forEach(components);
如果我理解正确,这个代码片段遍历源目录中的所有索引文件并从中导入所有内容.我的问题是:如何正确地将这个片段翻译成Typescript?或者是否有更好的解决方案,不需要import * from *解决方法?
我发现了这个问题:Typescript 1.8模块:从文件夹导入所有文件.这是否意味着我需要一个index.ts文件,我必须导入每个模块?这意味着每次我引入一个新的模块文件时,我都必须手动将其导入添加到index.ts?肯定有更好的办法.
我也对其他可以为整个代码库生成覆盖率报告的工具持开放态度,这是他们能够应对Typescript + Webpack + Karma + Mocha堆栈的唯一条件.我已经尝试过nyc,但根本无法获得任何代码覆盖率.
我的用例是关于远程(RESTful API 等)测试整个系统的子系统。这意味着“pytest 仅测试包”对生产代码没有任何依赖(意味着其他生产代码 python 包)。
我创建了一个 python 包,其中仅包含与测试相关的内容,例如 pytest 测试、pytest 固定装置、util 模块中的测试辅助函数、 pytests conftest.py、 pytestspytest.ini等。它不包含任何与生产代码相关的内容。
现在功能可以正常工作,但包的结构相当“hacky”。这意味着安装无法正常工作(test、fixture 和 conftest 文件未正确安装到site_packagesvia中MANIFEST.ini),并且必须“手动”完成包的部署。
在 pytest 文档中,我刚刚找到了有关如何构建包含生产和 pytest 测试代码的包的最佳实践:应用程序代码外部的测试、作为应用程序代码的一部分的测试和测试目录结构。
2.的可能解决方案:avocado-framework将示例测试部署为. 取决于默认部署的测试配置。setup.py/usr/share/avocado/tests
我有一个使用pyinstaller生成的构建.我需要创建.rpm包,它将把可执行文件放入/usr/bin/并创建一个运行该可执行文件的systemd服务.
我发现了这个 https://docs.python.org/3/distutils/builtdist.html和https://docs.python.org/2.0/dist/creating-rpms.html
但它并没有给我一个完整的图片.
有可能成功吗?
我需要使用什么工具集?(基本上,how制作它).
如果可能 - 示例代码
我有一个需要安装一些pip软件包的Dockerfile。其中一些需要grpcio,仅花费几分钟即可构建此部分。有没有人建议加快这一部分?
Installing collected packages: python-dateutil, azure-common, azure-nspkg, azure-storage, jmespath, docutils, botocore, s3transfer, boto3, smmap2, gitdb2, GitPython, grpcio, protobuf, googleapis-common-protos, grpc-google-iam-v1, pytz, google-api-core, google-cloud-pubsub
Found existing installation: python-dateutil 2.7.3
Uninstalling python-dateutil-2.7.3:
Successfully uninstalled python-dateutil-2.7.3
Running setup.py install for grpcio: started
Running setup.py install for grpcio: still running...
Running setup.py install for grpcio: still running...
Running setup.py install for grpcio: still running...
Run Code Online (Sandbox Code Playgroud)
谢谢。
我使用 pytest 调用目录下的所有测试。我怎样才能最后运行一个特定的测试用例?
python -m pytest ../testdir
../testdir/test_1.py.... test_n.py
Run Code Online (Sandbox Code Playgroud) 请查看下面的装置并帮助我了解 request 和 request.cls.driver=driver 到底在做什么?据我了解,它与夹具的范围有关,如果我使用不同的范围会发生什么?
@pytest.fixture(scope="class")
def driver_init(request):
from selenium import webdriver
web_driver = webdriver.Chrome("C:/chromedriver.exe")
request.cls.driver = web_driver
yield
web_driver.close()
Run Code Online (Sandbox Code Playgroud) 我想从 Python 调用返回 Python 对象的 Rust 函数:
my_rust_module.my_function() # => <object>
Run Code Online (Sandbox Code Playgroud)
我不确定如何创建这个函数,因为类实例化的 PYO3 指南描述了如何将这样的对象实例化为 a PyRef,但是我不知道如何从 a 返回这样的引用pyfunction。
这就是我正在尝试的:
#[pyfunction]
fn my_function(py: Python) -> PyRef {
let gil = Python::acquire_gil();
let py = gil.python();
PyRef::new(py, MyStruct { }).unwrap()
}
Run Code Online (Sandbox Code Playgroud)
但是,PyRef似乎不是有效的返回类型(编译器说“类型参数的数量错误:预期为 1,发现为 0”),并且我不知道如何将 a 转换PyRef为可以返回的内容,例如 a PyObject。
我正在使用 pytest 为我的 lambda 函数编写单元测试。我不知道应该如何将事件参数传递给函数调用。我了解到可以使用@pytest.fixture 来实现。我对 Python 和 pytest 非常陌生。相信我以错误的方式使用固定装置。请帮我!!
下面是我的 lambda 处理程序:
lambda_service.py
def lambda_handler(event, context):
logger.info('Event received: ' + json.dumps(event))
try:
sort = (event['sort'])
size = int(event['size'])
page = int(event['page'])
list_response = MyService().get_people_list(sort, size, page)
logger.info(list_response)
except Exception as e:
logger.error("Unable to fetch details")
logger.exception(e)
return list_response
Run Code Online (Sandbox Code Playgroud)
这是我的测试课-
class TestServiceHandler:
@pytest.fixture
def event(self):
return {
"sort": "asc",
"size": 5,
"page": 0
}
@pytest.fixture
def context(self):
return None
def test_lambda_handler(self):
result = lambda_service.lambda_handler(self.event, self.context)
assert_valid_schema(result, 'vendor_list.json')
Run Code Online (Sandbox Code Playgroud)
运行此测试时出现以下错误
line 17, …Run Code Online (Sandbox Code Playgroud) 我有一个复杂的 Django-Pytest 测试套件,其中有许多在并行进程中运行的测试。我想查看每个测试开始和结束的确切时间点。我怎样才能从 Pytest 中获取这些信息?
我在尝试使用 gitlab ci/cd 部署脚本时遇到这个问题:
Initialized empty Git repository in C:/builds/Tri.BuiV/test-gitlab-cicd/.git/
fatal: detected dubious ownership in repository at 'C:/builds/Tri.BuiV/test-gitlab-cicd'
'C:/builds/Tri.BuiV/test-gitlab-cicd' is owned by:
'S-1-5-83-1-1989435290-1148643240-1709935003-3943614564'
but the current user is:
'S-1-5-93-2-1'
To add an exception for this directory, call:
git config --global --add safe.directory C:/builds/Tri.BuiV/test-gitlab-cicd
Run Code Online (Sandbox Code Playgroud)
我试过:
git config --global --add safe.directory C:/builds/Tri.BuiV/test-gitlab-cicd
Run Code Online (Sandbox Code Playgroud)
但是同样的错误,为什么呢?
我试过:
git config --global --add safe.directory C:/builds/Tri.BuiV/test-gitlab-cicd
Run Code Online (Sandbox Code Playgroud)
但遇到同样的问题。
python ×7
pytest ×5
docker ×2
testing ×2
cicd ×1
dockerfile ×1
fixtures ×1
gitlab ×1
image ×1
javascript ×1
karma-runner ×1
pip ×1
pyinstaller ×1
pyo3 ×1
pytest-mock ×1
python-3.x ×1
rpm ×1
rpmbuild ×1
rust ×1
typescript ×1
webpack ×1