小编Zai*_*smi的帖子

在 Apache Beam 中使用 PAssert containsInAnyOrder 比较对象

在使用 PAssert 为我的光束管道编写单元测试时,管道输出对象很好,但在与以下断言错误进行比较时测试失败:

java.lang.AssertionError: Decode pubsub message/ParMultiDo(DecodePubSubMessage).output: 
Expected: iterable with items [<PubsubMessage{message=[123, 34, 104...], attributes={messageId=2be485e4-3e53-4468-a482-a49842b87ed5, dataPipelineId=bc957aa3-17e7-46d6-bc73-0924fa5674fa, region=us-west1, ingestionTimestamp=2020-02-02T12:34:56.789Z}, messageId=null}>] in any order
     but: not matched: <PubsubMessage{message=[123, 34, 104...], attributes={messageId=2be485e4-3e53-4468-a482-a49842b87ed5, dataPipelineId=bc957aa3-17e7-46d6-bc73-0924fa5674fa, region=us-west1, ingestionTimestamp=2020-02-02T12:34:56.789Z}, messageId=null}>
Run Code Online (Sandbox Code Playgroud)

我还尝试将 expectedOutputPubSubMessage 封装在一个列表中(显然原始输出在一个数组中)但无济于事。文档中所有给定的 PAssert 示例都进行了简单的字符串或键值比较。

@RunWith(PowerMockRunner.class)
public class DataDecodePipelineTest implements Serializable {

  @Rule
  public TestPipeline p = TestPipeline.create();

  @Test
  public void testPipeline(){
      PubsubMessage inputPubSubMessage =
              new PubsubMessage(
                      TEST_ENCODED_PAYLOAD.getBytes(),
                      new HashMap<String, String>() {
                          {
                              put(MESSAGE_ID_NAME, TEST_MESSAGE_ID);
                              put(DATA_PIPELINE_ID_NAME, TEST_DATA_PIPELINE_ID);
                              put(INGESTION_TIMESTAMP_NAME, TEST_INGESTION_TIMESTAMP);
                              put(REGION_NAME, TEST_REGION);
                          }
                      });

      PubsubMessage expectedOutputPubSubMessage =
              new …
Run Code Online (Sandbox Code Playgroud)

apache-beam apache-beam-io

5
推荐指数
1
解决办法
306
查看次数

检测Python代码

我想自动检测python函数内部遇到的所有if条件。例如,如果我的代码命中:

if x > 2:
    #do something
Run Code Online (Sandbox Code Playgroud)

我想在控制台上记录/打印“ x> 2”。

我在https://github.com/neuroo/equip/上发现了这个工具“ equip”, 但它仅在功能边界处安装。我认为我需要能够在字节码指令级别进行检测,以消除这些条件。

目前,我必须在每个if条件后手动stdout /追加

if x > 2:    
    list.append("x>2")
Run Code Online (Sandbox Code Playgroud)

python instrumentation

4
推荐指数
1
解决办法
1504
查看次数