小编hoe*_*ing的帖子

Karma测试:测量未经测试的代码的覆盖范围

我已经成功地使用Karma和Webpack为我在用Typescript编写的沙盒项目中设置了测试.代码覆盖率指标由Istanbul Instrumenter Loader收集.困扰我的是,我只报告了测试中导入的模块的覆盖范围,因此报告的100%覆盖范围实际上是一个肮脏的谎言.

寻找解决方案,我在Istanbul Instrumenter Loader的自述文件中找到了一段:

要为所有组件创建代码覆盖率报告(即使对于那些尚未进行测试的组件),您还需要所有1)源和2)测试.

测试/ index.js

// 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);
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,这个代码片段遍历源目录中的所有索引文件并从中导入所有内容.我的问题是:如何正确地将这个片段翻译成Typescript?或者是否有更好的解决方案,不需要import * from *解决方法?

编辑

我发现了这个问题:Typescript 1.8模块:从文件夹导入所有文件.这是否意味着我需要一个index.ts文件,我必须导入每个模块?这意味着每次我引入一个新的模块文件时,我都必须手动将其导入添加到index.ts?肯定有更好的办法.

编辑2

我也对其他可以为整个代码库生成覆盖率报告的工具持开放态度,这是他们能够应对Typescript + Webpack + Karma + Mocha堆栈的唯一条件.我已经尝试过nyc,但根本无法获得任何代码覆盖率.

javascript typescript karma-runner webpack

7
推荐指数
1
解决办法
454
查看次数

我应该如何构建一个仅用于 pytest 测试的包?

我的用例是关于远程(RESTful API 等)测试整个系统的子系统。这意味着“pytest 仅测试包”对生产代码没有任何依赖(意味着其他生产代码 python 包)。

我创建了一个 python 包,其中仅包含与测试相关的内容,例如 pytest 测试、pytest 固定装置、util 模块中的测试辅助函数、 pytests conftest.py、 pytestspytest.ini等。它不包含任何与生产代码相关的内容。

现在功能可以正常工作,但包的结构相当“hacky”。这意味着安装无法正常工作(test、fixture 和 conftest 文件未正确安装到site_packagesvia中MANIFEST.ini),并且必须“手动”完成包的部署。

在 pytest 文档中,我刚刚找到了有关如何构建包含生产和 pytest 测试代码的包的最佳实践:应用程序代码外部的测试作为应用程序代码的一部分的测试测试目录结构

  1. 我应该如何构造一个只包含测试代码的Python包?是否有替代的封装结构(优点、缺点)?
  2. 测试文件及其依赖项(固定装置、帮助程序等)应该安装到哪里?

2.的可能解决方案:avocado-framework将示例测试部署为. 取决于默认部署的测试配置。setup.py/usr/share/avocado/tests

python testing pytest

6
推荐指数
1
解决办法
5263
查看次数

Python 3.5使用pyinstaller生成的可执行文件创建.rpm

我有一个使用pyinstaller生成的构建.我需要创建.rpm包,它将把可执行文件放入/usr/bin/并创建一个运行该可执行文件的systemd服务.

我发现了这个 https://docs.python.org/3/distutils/builtdist.htmlhttps://docs.python.org/2.0/dist/creating-rpms.html

但它并没有给我一个完整的图片.

  1. 有可能成功吗?

  2. 我需要使用什么工具集?(基本上,how制作它).

  3. 如果可能 - 示例代码

python rpm pyinstaller rpmbuild python-3.x

6
推荐指数
1
解决办法
892
查看次数

带有pip grpcio的Dockerfile的构建速度非常慢

我有一个需要安装一些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)

谢谢。

python pip docker dockerfile

6
推荐指数
2
解决办法
1392
查看次数

当 pytest 运行目录中的所有测试时,它如何决定最后运行哪个测试?

我使用 pytest 调用目录下的所有测试。我怎样才能最后运行一个特定的测试用例?

python -m pytest ../testdir  
../testdir/test_1.py.... test_n.py
Run Code Online (Sandbox Code Playgroud)

python pytest

6
推荐指数
1
解决办法
1万
查看次数

request.cls.driver 在具有类范围的 pytest 固定装置中起什么作用?

请查看下面的装置并帮助我了解 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 pytest

6
推荐指数
1
解决办法
7779
查看次数

如何使用 PYO3 实现返回 Python 对象的 Rust 函数

我想从 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

rust pyo3

6
推荐指数
1
解决办法
2277
查看次数

Pytest lambda 处理程序传递事件和上下文

我正在使用 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)

python fixtures pytest pytest-mock

6
推荐指数
1
解决办法
6295
查看次数

Pytest:查找每个测试的开始和结束时间

我有一个复杂的 Django-Pytest 测试套件,其中有许多在并行进程中运行的测试。我想查看每个测试开始和结束的确切时间点。我怎样才能从 Pytest 中获取这些信息?

python testing pytest pytest-django

6
推荐指数
1
解决办法
352
查看次数

在存储库 GITLAB CI/CD 中检测到可疑的所有权

我在尝试使用 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)

但遇到同样的问题。

image gitlab docker cicd

6
推荐指数
2
解决办法
1万
查看次数