allure-framework / allure-python

Allure integrations for Python test frameworks
https://allurereport.org/
Apache License 2.0
718 stars 236 forks source link

Force cast features label values to string #616

Open Quron opened 3 years ago

Quron commented 3 years ago

[//]: # ( . Note: for support questions, please use Stackoverflow or Gitter. . This repository's issues are reserved for feature requests and bug reports. . . In case of any problems with Allure Jenkins plugin please use the following repository . to create an issue: https://github.com/jenkinsci/allure-plugin/issues . . Make sure you have a clear name for your issue. The name should start with a capital . letter and no dot is required in the end of the sentence. An example of good issue names: . . - The report is broken in IE11 . - Add an ability to disable default plugins . - Support emoji in test descriptions )

I'm submitting a ...

What is the current behavior?

https://github.com/allure-framework/allure-python/blob/50cb0ec0f388928eabf1fc5af92a009851d34965/allure-python-commons/src/_allure.py#L45-L46

Features values set as is.

What is the expected behavior?

Cast features to string

What is the motivation / use case for changing the behavior?

For easily cast to feature name from dataclasses

Its look better

@allure.feature(Features.some_feature1, Features.some_feature2)

vs

@allure.feature(str(Features.some_feature1), str(Features.some_feature2))

Please tell us about your environment:

Other information

[//]: # ( . e.g. detailed explanation, stacktraces, related issues, suggestions . how to fix, links for us to have more context, eg. Stackoverflow, Gitter etc )

Quron commented 3 years ago

If set object in label, test its ok, but report generation is failing

Could not read test result file /var/lib/jenkins/workspace/test/allure-results/d7566060-f94f-4f90-9edf-760ce70d8154-result.json
13:29:50 GMT+03:00 com.fasterxml.jackson.databind.JsonMappingException: Unexpected end-of-input within/between Object entries
13:29:50 GMT+03:00  at [Source: (sun.nio.ch.ChannelInputStream); line: 1, column: 12027] (through reference chain: io.qameta.allure.model.TestResult["labels"]->java.util.ArrayList[2])
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:394)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:365)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:302)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3070)
13:29:50 GMT+03:00  at io.qameta.allure.allure2.Allure2Plugin.readTestResult(Allure2Plugin.java:344)
13:29:50 GMT+03:00  at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
13:29:50 GMT+03:00  at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
13:29:50 GMT+03:00  at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
13:29:50 GMT+03:00  at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
13:29:50 GMT+03:00  at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
13:29:50 GMT+03:00  at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
13:29:50 GMT+03:00  at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
13:29:50 GMT+03:00  at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
13:29:50 GMT+03:00  at io.qameta.allure.allure2.Allure2Plugin.readResults(Allure2Plugin.java:104)
13:29:50 GMT+03:00  at io.qameta.allure.ReportGenerator.lambda$readResults$0(ReportGenerator.java:47)
13:29:50 GMT+03:00  at java.util.ArrayList.forEach(ArrayList.java:1257)
13:29:50 GMT+03:00  at io.qameta.allure.ReportGenerator.readResults(ReportGenerator.java:47)
13:29:50 GMT+03:00  at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
13:29:50 GMT+03:00  at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
13:29:50 GMT+03:00  at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
13:29:50 GMT+03:00  at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
13:29:50 GMT+03:00  at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
13:29:50 GMT+03:00  at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
13:29:50 GMT+03:00  at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
13:29:50 GMT+03:00  at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
13:29:50 GMT+03:00  at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:69)
13:29:50 GMT+03:00  at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:58)
13:29:50 GMT+03:00  at io.qameta.allure.Commands.generate(Commands.java:104)
13:29:50 GMT+03:00  at io.qameta.allure.CommandLine.run(CommandLine.java:152)
13:29:50 GMT+03:00  at java.util.Optional.orElseGet(Optional.java:267)
13:29:50 GMT+03:00  at io.qameta.allure.CommandLine.main(CommandLine.java:88)
13:29:50 GMT+03:00 Caused by: com.fasterxml.jackson.core.io.JsonEOFException: Unexpected end-of-input within/between Object entries
13:29:50 GMT+03:00  at [Source: (sun.nio.ch.ChannelInputStream); line: 1, column: 16071]
13:29:50 GMT+03:00  at com.fasterxml.jackson.core.base.ParserMinimalBase._reportInvalidEOF(ParserMinimalBase.java:618)
13:29:50 GMT+03:00  at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._skipColon2(UTF8StreamJsonParser.java:3096)
13:29:50 GMT+03:00  at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._skipColon(UTF8StreamJsonParser.java:3011)
13:29:50 GMT+03:00  at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextFieldName(UTF8StreamJsonParser.java:1009)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:295)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
13:29:50 GMT+03:00  at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
13:29:50 GMT+03:00  ... 34 more

Because plugin generate invalid json image