allure-python
allure-python copied to clipboard
Force cast features label values to string
I'm submitting a ...
- feature request
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:
- Allure version: 2.1.0
- Test framework: [email protected]
- Allure adaptor: [email protected]
Other information
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