[英]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.py
、 test_bcd.py
和test_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
測試:
$ pytest -v $(ls tests/testpi*)
ls
的輸出通過管道傳輸到xargs
以執行相同的操作:ls tests/testpi* | xargs pytest -v
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.