簡體   English   中英

通過 python Pytest 從一個 test.py 文件運行多個測試文件

[英]Running multiple test files from one test.py file through python Pytest

我在 test 文件夾中有多個測試文件。 結構類似於這樣:

/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"

我建議只使用 bash 腳本並使用它來調用命令行 python 調用。 例如,在你的 bash 腳本中,你可以只寫:

pytest test/

運行test目錄中的所有測試。 您還可以添加所有參數命令和在命令行上使用的任何命令。 然后,只需為要測試的特定文件或目錄集執行 bash 腳本。 查看pytest 文檔以供參考。

我有類似的需求,我只想運行一些測試文件而不是整個文件夾。 為了讓 pytest 使用單個命令運行多個文件,如果您重命名要作為一個組運行的文件,bash 提供了幾種不同的方法來運行這樣一個組。

在此示例中,我想運行所有以testpi名稱testpi測試:

  1. 收集所有匹配的文件並放入一個字符串中:
$ pytest -v $(ls tests/testpi*)
  1. ls的輸出通過管道傳輸到xargs以執行相同的操作:
ls tests/testpi* | xargs pytest -v

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM