簡體   English   中英

在 Palantir Foundry 中進行測試

[英]Testing in Palantir Foundry

在 Palantir Foundry 中,我可以看到我們可以使用 Pytest 或 TransformRunner 編寫單元測試。 我的理解是,對於 Pytest,我們無法通過 output 進行單元測試,並且在 TransformRunner 中我們無法使用我們最初必須使用的數據集。 我們需要一些測試數據。 但我想使用我的轉換應該在生產中運行的整個輸入數據集,並在它的 output 上運行測試。 我怎樣才能做到這一點?

您無法從 CI 訪問鑄造數據集,您需要將數據片段保存在存儲庫中的文件中,然后加載它。

測試/夾具/數據/輸入/a.csv

col_a,col_b
1,2
TEST_DATA_DIR = os.path.join(os.path.dirname(__file__), '..', '..', 'fixtures', 'data')


def test_runner_single_table(spark_session):
    pipeline = Pipeline()

    @transform_df(Output('/test_single_table/output/test'),
                  input_a=Input('/test_single_table/input/a'))
    def transform_1(input_a):
        return input_a.withColumn('col_c', input_a['col_a'] + input_a['col_b'])

    pipeline.add_transforms(transform_1)

    runner = TransformRunner(pipeline, '/test_single_table', TEST_DATA_DIR)

    output = runner.build_dataset(spark_session, '/test_single_table/output/test')
    assert output.first()['col_c'] == 3

TransformsRunner會將Input路徑轉換為目錄路徑。 在上面的例子中:

  • TEST_DATA_DIR告訴運行程序數據在您的環境中的位置
  • '/test_single_table'告訴運行程序可以忽略哪些子路徑,因為此路徑僅存在於代工廠數據集上,而不存在於您的存儲庫中
  • input/a將根據您在 repo 中定義的Input('[ignored_sub_path]/input/a')和文件夾結構進行解析。

您可以打印此屬性,如果您想更好地理解它們,它將顯示在 CI 檢查中。

暫無
暫無

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

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