通过python Pytest从一个test.py文件运行多个测试文件

时间:2018-12-10 06:04:06

标签: python pytest

我在测试文件夹中有多个测试文件。结构类似于以下内容:

/test
----test_abc.py
----test_bcd.py
----test_cde.py
----conftest.py

conftest.py包含所有运行单元测试所必需的spark上下文初始化。我的问题是我想拥有一个test.py文件,该文件在内部触发所有test_abc.pytest_bcd.pytest_cde.py。当我们处理python的 utit_test 模块时,它变得非常容易,但是我不确定如何通过 pytest 模块来获取它。让我知道在这个问题上是否需要进一步澄清。

conftest.py看起来像这样:

import pytest
from pyspark import SQLContext
from pyspark import SparkConf
from pyspark import SparkContext
from pyspark.streaming import StreamingContext

@pytest.fixture(scope="session")
def spark_context(request):
    conf = (SparkConf().setMaster("local[2]").setAppName("pytest-pyspark-local-testing"))
    request.addfinalizer(lambda: sc.stop())
    sc = SparkContext(conf=conf).getOrCreate()
    return sc

其中一个test_abc.py看起来像这样:

import pytest
import os
from pyspark.sql import SQLContext
pytestmark = pytest.mark.usefixtures("spark_context")
def test_get_pc_browser_sql(spark_context):
    "assert something"

1 个答案:

答案 0 :(得分:0)

我建议仅使用bash脚本,然后使用该脚本来调用命令行python调用。例如,在您的bash脚本中,您可以编写:

pytest test/

运行test目录中的所有测试。您还可以添加所有自变量命令以及在命令行上使用的所有命令。然后,只需对要测试的特定文件或目录集执行bash脚本。请参阅pytest Documentation供参考。