在使用 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) 我想自动检测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)