multipart fields jsonVariable 只是将 jsonVariable 中的一些键作为字段添加到表单中

问题描述 投票:0回答:1

我想在空手道场景中使用 multipart fields 关键词短语。我这样使用:

    * def formFields =
    """
    {
        partFileName: 'aa',
        partCount: 2,
        partNumber: 0,
        partSize: '#(testFiles.aa.byteSize)',
        fileSize: '#(testFiles.ab.byteSize)',
        fileName: 'ab'
    }
    """
    Given path 'uploads', uploadId
    And headers requiredHeaders
    * def readObject = ({ read: 'classpath:' + testFiles[formFields.partFileName].path, contentType: testFiles[formFields.partFileName].type })
    And multipart fields formFields
    And multipart file file = readObject
    And method put
    Then match responseStatus == 200

但是空手道仅将

formFields
中的 2 个键作为字段添加到表单中:

  1. 部分文件名
  2. 文件名

(你可以从空手道的输出中看到),所以我得到的responseStatus是500。

为什么空手道不将其他 4 个键作为字段添加到表单中?

以下是运行场景的相关输出:

$ java -DserviceName=aca-cip -Dkarate.options="--tags ~@zCommon1" -cp ~/aca/karate/jars/karate-1.4.1.jar:. com.intuit.karate.Main --threads 3 boof.feature
09:21:14.765 [main]  INFO  com.intuit.karate - Karate version: 1.4.1
09:21:14.922 [main]  INFO  com.intuit.karate.Runner - using system property 'karate.options': --tags ~@zCommon1
09:21:15.026 [main]  DEBUG com.intuit.karate.Suite - [config] classpath:karate-config.js
09:21:15.030 [main]  INFO  com.intuit.karate.Suite - backed up existing 'target/karate-reports' dir to: target/karate-reports_1697552475027
09:21:16.175 [main]  DEBUG com.intuit.karate - request:
1 > POST https://api-int.nmlv.nml.com/v1/aca-cip/uploads
1 > Content-Type: application/json
1 > x-nm-nm_login_id: acakvlrt
1 > x-nm-login_id: acakvlrt
1 > apikey: pp2**********
1 > Host: api-int.nmlv.nml.com
1 > Connection: Keep-Alive
1 > User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
1 > Accept-Encoding: gzip,deflate


09:21:16.587 [main]  DEBUG com.intuit.karate - response time in milliseconds: 408
1 < 201
1 < Date: Tue, 17 Oct 2023 14:21:16 GMT
1 < Content-Type: application/json
1 < Transfer-Encoding: chunked
1 < Connection: keep-alive
1 < Cache-Control: no-cache, no-store, max-age=0, must-revalidate
1 < Expires: 0
1 < Location: https://api-int.nmlv.nml.com/api/v1/aca-cip/uploads/batchId-cdcaf789-db0a-42d7-bb12-4446755a25f2
1 < Pragma: no-cache
1 < Strict-Transport-Security: max-age=31536000 ; includeSubDomains
1 < X-Content-Type-Options: nosniff
1 < X-Frame-Options: DENY
1 < X-Ratelimit-Limit: 0
1 < X-Ratelimit-Remaining: 0
1 < X-Ratelimit-Reset: 0
1 < X-Tyk-Api-Expires: Thu, 02 Jan 3000 15:04:00 UTC
1 < X-Xss-Protection: 1; mode=block
1 < x-nm-request-id: 57627821792bb2c258eeb0b98ac27e1d
{"id":"batchId-cdcaf789-db0a-42d7-bb12-4446755a25f2","key":null,"owner":"acakvlrt","initiated":"2023-10-17T14:21:16.654Z","parts":null}

CurrentTime epochmillis =  1697552476617
PointInTime epochmillis =  1697552476654
millisFromNow =  37
09:21:16.640 [main]  INFO  com.intuit.karate - [print] formFields:  {
  "partFileName": "boof",
  "partCount": 2,
  "partNumber": 0,
  "partSize": 100,
  "fileSize": 10580000,
  "fileName": "ab"
}

09:21:16.712 [main]  DEBUG c.i.karate.http.MultiPartBuilder - multipart: content-disposition: form-data; name="partFileName"; filename=""
content-type: text/plain; charset=UTF-8
content-length: 4
Completed: true
IsInMemory: true
09:21:16.713 [main]  DEBUG c.i.karate.http.MultiPartBuilder - multipart: content-disposition: form-data; name="fileName"; filename=""
content-type: text/plain; charset=UTF-8
content-length: 2
Completed: true
IsInMemory: true
09:21:16.725 [main]  DEBUG com.intuit.karate - request:
2 > PUT https://api-int.nmlv.nml.com/v1/aca-cip/uploads/batchId-cdcaf789-db0a-42d7-bb12-4446755a25f2
2 > Content-Type: application/json; boundary=44f68c049ab9e862
2 > x-nm-nm_login_id: acakvlrt
2 > x-nm-login_id: acakvlrt
2 > apikey: pp2**********
2 > Content-Length: 546
2 > Host: api-int.nmlv.nml.com
2 > Connection: Keep-Alive
2 > User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
2 > Accept-Encoding: gzip,deflate
--44f68c049ab9e862
content-disposition: form-data; name="partFileName"
content-length: 4
content-type: text/plain; charset=UTF-8

boof
--44f68c049ab9e862
content-disposition: form-data; name="fileName"
content-length: 2
content-type: text/plain; charset=UTF-8

ab
--44f68c049ab9e862
content-disposition: form-data; name="file"; filename="boof"
content-length: 100
content-type: text/plain; charset=UTF-8

aaaaaaaaa
aaaaaaaaa
aaaaaaaaa
aaaaaaaaa
aaaaaaaaa
aaaaaaaaa
aaaaaaaaa
aaaaaaaaa
aaaaaaaaa
aaaaaaaaa

--44f68c049ab9e862--


09:21:16.872 [main]  DEBUG com.intuit.karate - response time in milliseconds: 146
2 < 500
2 < Date: Tue, 17 Oct 2023 14:21:16 GMT
2 < Content-Type: application/json
2 < Transfer-Encoding: chunked
2 < Connection: keep-alive
2 < Cache-Control: no-cache, no-store, max-age=0, must-revalidate
2 < Expires: 0
2 < Pragma: no-cache
2 < Strict-Transport-Security: max-age=31536000 ; includeSubDomains
2 < X-Content-Type-Options: nosniff
2 < X-Frame-Options: DENY
2 < X-Ratelimit-Limit: 0
2 < X-Ratelimit-Remaining: 0
2 < X-Ratelimit-Reset: 0
2 < X-Tyk-Api-Expires: Thu, 02 Jan 3000 15:04:00 UTC
2 < X-Xss-Protection: 1; mode=block
2 < x-nm-request-id: 0312c0e85b18000f0fede3c6eb8229b9
{"errorCode":"500","errorMessage":"Internal Server Error","errorDetails":"The server encountered an unexpected error while processing the request"}

09:21:16.878 [main]  ERROR com.intuit.karate - boof.feature:38
Then match responseStatus == 200
match failed: EQUALS
  $ | not equal (NUMBER:NUMBER)
  500
  200

boof.feature:38
---------------------------------------------------------
feature: boof.feature
scenarios:  1 | passed:  0 | failed:  1 | time: 1.0315
---------------------------------------------------------

09:21:17.822 [main]  INFO  com.intuit.karate.Suite - <<fail>> feature 1 of 1 (0 remaining) boof.feature
Karate version: 1.4.1
======================================================
elapsed:   2.91 | threads:    1 | thread time: 1.03
features:     1 | skipped:    0 | efficiency: 0.35
scenarios:    1 | passed:     0 | failed: 1
======================================================
>>> failed features:
match failed: EQUALS
  $ | not equal (NUMBER:NUMBER)
  500
  200

boof.feature:38
<<<

HTML report: (paste into browser to view) | Karate version: 1.4.1
file:///Users/DET8049/aca/git/aca-test-document-api/target/karate-reports/karate-summary.html
===================================================================
multipartform-data karate
1个回答
0
投票

我想我发现了问题:

多部分形式中缺少的

formFields

 中的键都是整数,当我定义 
formFields
 变量时,没有一个被引用。当我引用它们时,它们会作为字段提交到表单中。

© www.soinside.com 2019 - 2024. All rights reserved.