如何为加特林测试创建luhn检查

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

我目前在加特林(Gatling)使用馈线,因此对于每个订单都会创建一个随机的32位数字。

val feeder = Iterator.continually(Map("orderNumber" -> (Random.alphanumeric.filter(_.isDigit).take(32).mkString)))

但是,即使Luhn校验确实创建了一个随机的32位数字,但由于Luhn校验失败而仍然失败,但是对于Luhn校验通过而言无效。

关于如何创建可为加特林测试生成有效数字的函数的任何想法。

谢谢

scala load-testing gatling luhn
1个回答
0
投票

研究了维基百科的描述后,我将其拼凑在一起。

import scala.util.Random

def mkLuhn(len :Int) :String = {
  assert(len >= 0)
  LazyList.unfold((len,0)){  //<--Scala 2.13.x
    case (0,_) => None
    case (1,sum) => Some((sum%10, (0,0)))
    case (idx,sum) =>
      val digit = Random.nextInt(10)
      if (idx%2 > 0)      Some((digit, (idx-1, sum+digit)))
      else if (digit < 5) Some((digit, (idx-1, sum+digit*2)))
      else                Some((digit, (idx-1, sum+(digit*2-9))))
  }.mkString
}

查看它是否对您有用。

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