[英]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.